Apache Iceberg™-Tabellen verwalten¶
Apache Iceberg™-Tabellen in Snowflake verwalten:
Sie können auch eine Iceberg-Tabelle, die einen externen Katalog verwendet, in eine Tabelle konvertieren, die Snowflake als Iceberg-Katalog verwendet. Weitere Informationen dazu finden Sie unter Apache Iceberg™-Tabelle konvertieren, um Snowflake als Katalog zu verwenden.
Eine Tabelle abfragen¶
Um eine Iceberg-Tabelle abzufragen, muss ein Benutzer die folgenden Berechtigungen erhalten oder erben:
Die USAGE-Berechtigung für die Datenbank und das Schema, die die Tabelle enthalten
Die SELECT-Berechtigungen für die Tabelle
Sie können eine Iceberg-Tabelle mit einer SELECT-Anweisung abfragen. Beispiel:
SELECT col1, col2 FROM my_iceberg_table;
DML-Befehle mit von Snowflake verwalteten Tabellen verwenden¶
Iceberg-Tabellen, die Snowflake als Katalog verwenden, unterstützen vollständig Befehle der Datenbearbeitungssprache (DML):
Sie können auch mit COPY INTO <Tabelle> oder mit Snowpipe Daten in eine von Snowflake verwaltete Tabelle kopieren.
Beispiel: Eine Tabelle aktualisieren¶
Sie können INSERT- und UPDATE- Anweisungen verwenden, um von Snowflake verwaltete Iceberg-Tabellen zu ändern.
Im folgenden Beispiel wird in eine Iceberg-Tabelle namens store_sales
ein neuer Wert eingefügt, und dann wird die Spalte cola
auf 1 aktualisiert, wenn der Wert derzeit -99 ist.
INSERT INTO store_sales VALUES (-99);
UPDATE store_sales
SET cola = 1
WHERE cola = -99;
Snapshots von DML-Änderungen generieren¶
Bei Tabellen, die Snowflake als Katalog verwenden, generiert Snowflake automatisch die Iceberg-Metadaten. Snowflake schreibt die Metadaten in einen Ordner mit dem Namen metadata
auf Ihrem externen Volume an dem Speicherort, der beim Erstellen der Tabelle mit dem Parameter BASE_LOCATION
angegeben wurde.
Alternativ können Sie die Funktion SYSTEM$GET_ICEBERG_TABLE_INFORMATION aufrufen, um Iceberg-Metadaten für alle neuen Änderungen zu generieren.
Bei Tabellen, die nicht von Snowflake verwaltet werden, gibt die Funktion Informationen zum letzten aktualisierten Snapshot zurück.
Beispiel:
SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('db1.schema1.it1');
Ausgabe:
+-----------------------------------------------------------------------------------------------------------+
| SYSTEM$GET_ICEBERG_TABLE_INFORMATION('DB1.SCHEMA1.IT1') |
|-----------------------------------------------------------------------------------------------------------|
| {"metadataLocation":"s3://mybucket/metadata/v1.metadata.json","status":"success"} |
+-----------------------------------------------------------------------------------------------------------+
Tabellen warten, die einen externen Katalog verwenden¶
Sie können Wartungsoperationen auf Iceberg-Tabellen ausführen, die einen externen Katalog verwenden.
Die Wartungsoperationen umfassen Folgendes:
Snapshots ablaufen lassen
Alte Metadaten-Dateien entfernen
Datendateien komprimieren
Wichtig
Um Ihre Iceberg-Tabelle mit externen Änderungen synchron zu halten, ist es wichtig, dass Sie Ihren Snowflake-Aktualisierungsplan mit der Tabellenwartung abstimmen. Aktualisieren Sie die Tabelle jedes Mal, wenn Sie eine Wartungsoperation ausführen.
Informationen zur Wartung von Iceberg-Tabellen, die nicht von Snowflake verwaltet werden, finden Sie in der Apache Iceberg-Dokumentation unter Wartung.
Tabellen-Metadaten aktualisieren¶
Wenn Sie einen externen Iceberg-Katalog verwenden, können Sie die Metadaten der Tabelle mit dem Befehl ALTER ICEBERG TABLE … REFRESH aktualisieren. Durch das Aktualisieren der Tabellenmetadaten werden die Metadaten mit den jüngsten Tabellenänderungen synchronisiert.
Aktualisieren der Metadaten für eine Tabelle¶
Das folgende Beispiel aktualisiert manuell die Metadaten für eine Tabelle, die einen externen Katalog verwendet (z. B. AWS Glue oder Delta). Durch das Aktualisieren der Tabelle wird die Tabelle mit allen Änderungen, die im Remote-Katalog vorgenommen wurden, synchronisiert.
Bei diesem Typ von Iceberg-Tabelle geben Sie im Befehl keinen Pfad zur Metadatendatei an.
ALTER ICEBERG TABLE my_iceberg_table REFRESH;
Aktualisieren Sie die Metadaten für eine aus Iceberg-Dateien erstellte Tabelle¶
Im folgenden Beispiel wird eine Tabelle manuell aktualisiert, die aus Iceberg-Metadatendateien in einem externen Cloudspeicherort erstellt wurde, wobei der relative Pfad zu einer Metadatendatei ohne Schrägstrich (/
) angegeben wird. Die Metadatendatei definiert die Daten in der Tabelle nach dem Aktualisieren.
ALTER ICEBERG TABLE my_iceberg_table REFRESH 'metadata/v1.metadata.json';
Speichermetriken abrufen¶
Snowflake stellt Ihrem Konto keine Kosten für die Speicherung der Iceberg-Tabellen in Rechnung. Sie können jedoch nachvollziehen, wie viel Speicherplatz eine Iceberg-Tabelle belegt, indem Sie die Ansichten TABLE_STORAGE_METRICS und TABLES im Schema Snowflake Information Schema oder Account Usage abfragen.
Die folgende Beispielabfrage verbindet die Ansicht ACCOUNT_USAGE.TABLE_STORAGE_METRICS mit der Ansicht ACCOUNT_USAGE.TABLES und filtert nach der Spalte TABLES.IS_ICEBERG.
SELECT metrics.* FROM
snowflake.account_usage.table_storage_metrics metrics
INNER JOIN snowflake.account_usage.tables tables
ON (
metrics.id = tables.table_id
AND metrics.table_schema_id = tables.table_schema_id
AND metrics.table_catalog_id = tables.table_catalog_id
)
WHERE tables.is_iceberg='YES';