Dynamische Apache Iceberg™-Tabellen erstellen¶
Unter diesem Thema wird erklärt, wie Sie die folgenden Arten von dynamischen Tabellen erstellen und was Sie dabei beachten müssen:
Dynamische Tabellen, die von Snowflake verwaltete Apache Iceberg™-Tabellen als Basistabelle lesen.
Dynamische Iceberg-Tabellen, die Abfrageergebnisse im Format der Iceberg-Tabelle speichern.
Die von Snowflake verwaltete Iceberg Basistabelle kann entweder eine reguläre Snowflake-verwaltete Iceberg-Tabelle oder eine von Snowflake verwaltete dynamische Iceberg-Tabelle sein.
Dynamische Tabellen, die aus Iceberg-Tabellen lesen, erstellen¶
Dynamische Tabellen, die aus einer von Snowflake verwalteten Iceberg-Tabelle gelesen werden, sind nützlich, wenn Sie möchten, dass Ihre Pipelines auf Daten in einer Snowflake-verwalteten Iceberg-Tabelle operieren oder wenn Sie möchten, dass Ihre verarbeiteten Daten von anderen Engines aus abgefragt werden können, z. B. mit Apache Iceberg SDK mit Spark.
Das Erstellen einer dynamischen Tabelle aus einer Iceberg-Tabelle ist ähnlich wie das Erstellen einer dynamischen Tabelle aus einer regulären Tabelle. Führen Sie dazu die SQL-Anweisung CREATE DYNAMIC TABLE aus, wie Sie es bei einer normalen Tabelle tun würden.
Dynamische Iceberg-Tabellen erstellen¶
Dynamische Iceberg-Tabellen vereinen die Vorteile von dynamischen Tabellen und Snowflake-verwalteten Iceberg-Tabellen und bieten Features wie die Verwaltung von externem Cloud-Speicher, automatische Datentransformation und Leistungsoptimierung.
Dynamische Iceberg-Tabellen lassen sich in Data Lakes integrieren, mit denen Sie Daten in einem externen Cloudspeicher wie AWS S3 oder Azure Blob Storage speichern können, während sie von Snowflake verwaltet werden. Diese Tabellen unterstützen ACID-Transaktionen, Schemaentwicklung, versteckte Partitionierung und Tabellen-Snapshots.
Die automatisierte Datentransformationen mit dynamischen Iceberg-Tabellen nutzt deklarative SQL, um den gewünschten Endzustand ohne Verwaltung von Zwischenschritten zu definieren. Snowflake übernimmt die Orchestrierung, Planung und Aktualisierung von Datentransformationen auf der Grundlage Ihrer festgelegten Ziele für die Datenaktualität.
Die Optimierung der Leistung erfolgt durch inkrementelle Verarbeitung, bei der nur geänderte Daten verarbeitet werden, um die Leistung zu verbessern und die Kosten im Vergleich zu einer vollständigen Datenaktualisierung zu senken. Darüber hinaus können Sie mit einem einfachen Befehl zwischen Batchverarbeitung und Streaming-Daten wechseln, was für Flexibilität in den Datenverarbeitungs-Workflows sorgt.
Beispiele für die Anwendung dynamischer Iceberg-Tabellen sind:
Data Lake-Integration: Sie können große Datenmengen kostengünstig speichern und gleichzeitig Transformationen und Analysen in Snowflake durchführen, indem Sie das Iceberg-Format für effiziente Abfragen und eine effiziente Verwaltung nutzen.
Definition kontinuierlicher Datentransformationspipelines: Durch die Verwendung dynamischer Tabellen können Sie sicherstellen, dass die Daten ohne manuelle Eingriffe immer auf dem neuesten Stand sind, und Streams mit hoher Geschwindigkeit durch inkrementelle Verarbeitung effizient verarbeiten.
Um eine dynamische Iceberg-Tabelle zu erstellen, führen Sie die SQL-Anweisung CREATE DYNAMIC ICEBERG TABLE aus. Um zum Beispiel eine dynamische Iceberg-Tabelle mit dem Namen product
zu erstellen, die aus my_iceberg_table
liest, verwenden Sie die folgende Syntax:
CREATE DYNAMIC ICEBERG TABLE product (date TIMESTAMP_NTZ, id NUMBER, content STRING)
TARGET_LAG = '20 minutes'
WAREHOUSE = mywh
EXTERNAL_VOLUME = 'my_external_volume'
CATALOG = 'SNOWFLAKE'
BASE_LOCATION = 'my_iceberg_table'
AS
SELECT product_id, product_name FROM staging_table;
Zukünftige Berechtigungszuweisungen für dynamische Iceberg-Tabellen¶
Um den Zugriff auf alle neuen dynamischen Iceberg-Tabellen, die im Schema erstellt wurden, zu gewährleisten, verwenden Sie die Syntax GRANT … ON FUTURE ICEBERG TABLES ohne das Schlüsselwort DYNAMIC
. Beispiel:
GRANT <privilege> ON FUTURE ICEBERG TABLES IN SCHEMA my_schema TO ROLE my_role;
Wenn Sie das Schlüsselwort DYNAMIC
verwenden, bietet die Berechtigung keinen Zugriff auf neue dynamische Iceberg-Tabellen, die im Schema erstellt wurden. Der folgende Befehl gilt zum Beispiel nicht für dynamische Iceberg-Tabellen:
GRANT <privilege> ON FUTURE DYNAMIC TABLES IN SCHEMA my_schema TO ROLE my_role;
Hinweise und Einschränkungen¶
Dynamische Iceberg-Tabellen unterstützen die gleichen Datentypen wie reguläre Iceberg-Tabellen in Snowflake. Weitere Informationen dazu finden Sie unter Unterstützte Datentypen.
Bei Katalog handelt es sich um einen Konto-, Schema- oder Datenbankparameter, den Sie genau wie die von Snowflake verwalteten Iceberg-Tabellen als implizit konfigurieren können.
Dynamische Iceberg-Tabellen unterstützen derzeit nicht die
IF NOT EXISTS
-Klausel. Die Verwendung der KlauselIF NOT EXISTS
führt zu einem Fehler, wenn die Zieltabelle bereits existiert.Dynamische Iceberg-Tabellen werden derzeit nur für
CREATE
-Anweisungen unterstützt. Die Angabe vonDYNAMIC ICEBERG
in einem anderen Befehl (z. B.ALTER DYNAMIC ICEBERG TABLE <Name>
) führt zu einem Fehler.