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.

Siehe auch:

CREATE ICEBERG TABLE, DROP ICEBERG TABLE, SHOW ICEBERG TABLES, DESCRIBE ICEBERG TABLE

Syntax

ALTER ICEBERG TABLE [ IF EXISTS ] <table_name> REFRESH [ '<metadata_file_relative_path>' ]
Copy

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 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.

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;
Copy

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';
Copy

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.