ALTER ICEBERG TABLE … REFRESH¶
Aktualisiert die Metadaten für eine Apache Iceberg™-Tabelle, die einen externen Iceberg-Katalog verwendet. Durch das Aktualisieren einer Iceberg-Tabelle werden die Tabellen-Metadaten mit den jüngsten Tabellenänderungen synchronisiert.
Unter diesem Thema werden Iceberg-Tabellen einfach als „Tabellen“ bezeichnet, es sei denn, die Angabe von Iceberg-Tabellen vermeidet Verwechslungen.
Syntax¶
ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> REFRESH [ '<metadata_file_relative_path>' ]
Parameter¶
table_name
Bezeichner für die zu aktualisierende Tabelle.
Wenn der Bezeichner Leerzeichen oder Sonderzeichen enthält, muss die gesamte Zeichenfolge in doppelte Anführungszeichen gesetzt werden. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß- und Kleinschreibung zu beachten.
Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.
'metadata_file_relative_path'
Gibt den Pfad zu einer Metadatendatei für eine Tabelle an, die aus Iceberg-Dateien im Objektspeicher erstellt wurde. Der Pfad muss relativ zum aktiven Speicherort des mit der Tabelle verbundenen externen Volumes sein.
Die folgende Tabelle zeigt, welchen Wert Sie auf Basis eines Beispiel-Speicherorts angeben müssen:
Aktiver Speicherort für das externe Volume der Tabelle
s3://mybucket_us_east_1
Vollständiger Pfad zur Metadaten-Datei
s3://mybucket_us_east_1/metadata/v1.metadata.json
Wert zur Angabe als
'metadata_file_relative_path'
metadata/v1.metadata.json
(ohne führenden Schrägstrich)Bemerkung
Wenn die Tabelle AWS Glue als Katalog verwendet oder aus Delta-Tabellendateien erstellt wurde, geben Sie keinen Pfad zu einer Metadatendatei an.
Lassen Sie den führenden Schrägstrich (
/
) im Metadaten-Dateipfad weg.Vor Snowflake-Version 7.34 war ein Parameter namens
BASE_LOCATION
(in früheren Versionen auchFILE_PATH
genannt) erforderlich, um aus Iceberg-Dateien im Objektspeicher eine Tabelle zu erstellen. Der Parameter gab einen relativen Pfad vomEXTERNAL_VOLUME
-Speicherort an.Um eine Tabelle zu aktualisieren, die Sie mit der alten Syntax erstellt haben, geben Sie einen Pfad relativ zum
BASE_LOCATION
-Speicherort an. Wenn der vollständige Pfad zu Ihrer Metadatendatei beispielsweises3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json
lautet, geben Sie fürmetadata-file-relative-path
den Wertmetadata/v1.metadata.json
an.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
OWNERSHIP |
Iceberg-Tabelle |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
USAGE |
Externes Volume |
|
USAGE |
Katalogintegration |
Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Nur der Eigentümer der Tabelle (d. h. die Rolle mit der Berechtigung OWNERSHIP für die Tabelle) oder ein Benutzer mit weitreichenderen Berechtigungen kann diesen Befehl ausführen.
Die Verwendung des Befehls ALTER ICEBERG TABLE … REFRESH in Transaktionen (implizit oder explizit) wird nicht unterstützt.
Aktualisierungsoperationen während CREATE und ALTER … REFRESH können maximal 1.000 Delta-Commit-Dateien pro Operation verarbeiten.
Bemerkung
Snowflake verwendet bei der Erstellung einer Iceberg-Tabelle Delta-Checkpoint-Dateien. Die Beschränkung auf 1.000 Commit-Dateien gilt nur für Commits nach dem letzten Prüfpunkt.
Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
Beispiele¶
Eine Tabelle aktualisieren¶
In diesem Beispiel werden die Metadaten für eine Tabelle in den folgenden Szenarios manuell aktualisiert:
Die Tabelle verwendet AWS Glue für den Iceberg-Katalog.
Die Tabelle basiert auf Delta-Tabellendateien im Objektspeicher.
Für diese Szenarios geben Sie im Aktualisierungsbefehl keinen Pfad zu einer Metadatendatei an.
ALTER ICEBERG TABLE myIcebergTable REFRESH;
Aktualisieren einer aus Iceberg-Dateien erstellten Tabelle im Objektspeicher¶
In diesem Beispiel werden die Metadaten der Tabelle auf der Grundlage von Änderungen in einer neuen Metadatendatei manuell aktualisiert. In diesem Beispiel lautet der vollständige Pfad zur Metadatendatei <external-volume-storage-base-url>/path/to/metadata/v2.metadata.json
.
Wenn Sie eine Metadaten-Datei angeben, fügen Sie keinen führenden Schrägstrich (/
) in den Metadaten-Dateipfad ein.
ALTER ICEBERG TABLE my_iceberg_table REFRESH 'path/to/metadata/v2.metadata.json';
Bemerkung
Vor Snowflake-Version 7.34 war ein Parameter namens BASE_LOCATION
(in früheren Versionen auch FILE_PATH
genannt) erforderlich, um aus Iceberg-Dateien im Objektspeicher eine Tabelle zu erstellen. Der Parameter gab einen relativen Pfad vom EXTERNAL_VOLUME
-Speicherort an.
Um eine Tabelle zu aktualisieren, die Sie mit der alten Syntax erstellt haben, geben Sie einen Pfad relativ zum BASE_LOCATION
-Speicherort an. Wenn der vollständige Pfad zu Ihrer Metadatendatei beispielsweise s3://mybucket_us_east_1/my_base_location/metadata/v1.metadata.json
lautet, geben Sie für metadata-file-relative-path
den Wert metadata/v1.metadata.json
an.