Apache Iceberg™-Tabellen

Apache Iceberg™-Tabellen für Snowflake kombinieren die Leistung und Abfrage-Semantik typischer Snowflake-Tabellen mit externem Cloud-Speicher, den Sie verwalten. Sie sind ideal für bestehende Data Lakes, die Sie nicht in Snowflake speichern können oder möchten.

Iceberg-Tabellen verwenden die Apache Iceberg™ Spezifikation für offene Tabellenformate, die eine Abstraktionsschicht für in offenen Formaten gespeicherte Datendateien bietet und Features wie:

  • ACID-Transaktionen (Atomarität, Konsistenz, Isolation, Dauerhaftigkeit)

  • Schemaentwicklung

  • Verdeckte Partitionierung

  • Tabellen-Snapshots

Snowflake unterstützt Iceberg-Tabellen, die das Dateiformat Apache Parquet™ verwenden.

Erste Schritte

Um mit der Verwendung von Iceberg-Tabellen zu beginnen, lesen Sie die Informationen unter Tutorial: Ihre erste Apache Iceberg™-Tabelle erstellen.

Wie es funktioniert

Dieser Abschnitt enthält spezielle Informationen zur Verwendung von Iceberg-Tabellen in Snowflake. Um mehr über die Spezifikation des Iceberg-Tabellenformats zu erfahren, lesen Sie die offizielle Apache Iceberg-Dokumentation und die Iceberg Table Spec.

Datenspeicher

Iceberg-Tabellen speichern ihre Daten und Metadaten an einem externen Cloudspeicherort (Amazon S3, Google Cloud Storage oder Azure Storage). Der externe Speicher ist nicht Teil von Snowflake. Sie sind für die gesamte Verwaltung des externen Cloudspeicherortes selbst verantwortlich. Snowflake bietet keinen Fail-safe-Speicher für Iceberg-Tabellen.

Snowflake stellt die Konnektivität zu Ihrem Speicherort über ein externes Volume her, sodass für Iceberg-Tabellen keine Snowflake-Speicherkosten anfallen. Weitere Informationen dazu finden Sie unter Rechnungsstellung.

Weitere Informationen zum Speichern von Iceberg-Tabellen finden Sie unter Speicher für Apache Iceberg™-Tabellen.

Externes Volume

Ein externes Volume ist ein benanntes Snowflake-Objekt auf Kontoebene, das Sie verwenden, um Snowflake mit Ihrem externen Cloudspeicher für Iceberg-Tabellen zu verbinden. Ein externes Volume speichert eine Identitäts- und Zugriffsverwaltungseinheit (IAM) für Ihren Speicherort. Snowflake verwendet die IAM-Entität, um eine sichere Verbindung zu Ihrem Speicher für den Zugriff auf Tabellendaten, Iceberg-Metadaten und Manifest-Dateien herzustellen, in denen das Tabellenschema, Partitionen und andere Metadaten gespeichert sind.

Ein einzelnes externes Volume kann eine oder mehrere Iceberg-Tabellen unterstützen.

Weitere Informationen zum Einrichten eines externen Volumes für Iceberg-Tabellen finden Sie unter Externes Volume konfigurieren.

Katalog

Ein Iceberg-Katalog ermöglicht einem Computemodul das Verwalten und Laden von Iceberg-Tabellen. Der Katalog bildet die erste architektonische Schicht in der Iceberg-Tabellenspezifikation und muss Folgendes unterstützen:

  • Speichern des aktuellen Metadatenzeigers für eine oder mehrere Iceberg-Tabellen. Ein Metadatenzeiger weist den Namen einer Tabelle dem Speicherort der aktuellen Metadatendatei dieser Tabelle zu.

  • Ausführen atomarer Operationen, damit Sie den aktuellen Metadatenzeiger einer Tabelle aktualisieren können.

Weitere Informationen zu Iceberg-Katalogen finden Sie in der Apache Iceberg-Dokumentation.

Snowflake unterstützt verschiedene Katalogoptionen. Sie können zum Beispiel Snowflake als Iceberg-Katalog verwenden oder eine Katalogintegration nutzen, um Snowflake mit einem externen Iceberg-Katalog zu verbinden.

Katalogintegration

Eine Katalogintegration ist ein benanntes Snowflake-Objekt auf Kontoebene, das Informationen darüber speichert, wie Ihre Metadaten für die folgenden Szenarios organisiert sind:

  • Wenn Sie nicht Snowflake als Iceberg Katalog verwenden Sie benötigen zum Beispiel eine Katalogintegration, wenn Ihre Tabelle von AWS Glue verwaltet wird.

  • Wenn Sie eine Integration mit Snowflake Open Catalog vornehmen möchten:

    • Abfrage einer Iceberg-Tabelle in Snowflake Open Catalog mit Snowflake.

    • Synchronisieren Sie eine von Snowflake verwaltete Iceberg-Tabelle mit Snowflake Open Catalog, sodass Computemodule von Drittanbietern die Tabelle abfragen können.

Eine einzelne Katalogintegration kann eine oder mehrere Iceberg-Tabellen unterstützen, die denselben externen Katalog verwenden.

Weitere Informationen zum Einrichten einer Katalogintegration finden Sie unter Eine Katalogintegration konfigurieren.

Metadaten und Snapshots

Iceberg verwendet ein Snapshot-basiertes Abfragemodell, bei dem Datendateien mithilfe von Manifest- und Metadatendateien zugeordnet werden. Ein Snapshot stellt den Zustand einer Tabelle zu einem bestimmten Zeitpunkt dar und wird für den Zugriff auf den gesamten Satz von Datendateien in der Tabelle verwendet.

Informationen zu Metadaten für Tabellen und zur Unterstützung von Time Travel finden Sie unter Metadaten und Speicher für Apache Iceberg™-Tabellen.

Cloud-/regionsübergreifende Unterstützung

Snowflake unterstützt die Verwendung eines externen Volumenspeichers bei einem anderen Cloud-Anbieter (in einer anderen Region) als demjenigen, der Ihr Snowflake-Konto hostet.

Tabellentyp

Cloud-/regionsübergreifende Unterstützung

Anmerkungen

Tabellen, die einen externen Katalog mit einer Katalogintegration verwenden

Wenn sich Ihr Snowflake-Konto und Ihr externes Volume in unterschiedlichen Regionen befinden, fallen für Ihr externes Cloudspeicherkonto bei Abfragen der Tabelle Kosten für ausgehende Daten an.

Tabellen, die Snowflake als Iceberg-Katalog verwenden

Wenn sich Ihr Snowflake-Konto und Ihr externes Volume in unterschiedlichen Regionen befinden, fallen für Ihr externes Cloudspeicherkonto bei Abfragen der Tabelle Kosten für ausgehende Daten an.

Für diese Tabellen fallen Kosten für die regionsübergreifende Datentransfernutzung an. Weitere Informationen dazu finden Sie unter Rechnungsstellung.

Rechnungsstellung

Snowflake stellt Ihrem Konto die Computenutzung des virtuellen Warehouses und die Clouddienste in Rechnung, wenn Sie mit Iceberg-Tabellen arbeiten. Snowflake rechnet Ihr Konto auch ab, wenn Sie automatisierte Aktualisierung verwenden.

Wenn eine von Snowflake verwaltete Iceberg-Tabelle cloud-/regionsübergreifend ist, stellt Snowflake Ihre regionsübergreifende Datentransfernutzung unter TRANSFER_TYPE von DATA_LAKE in Rechnung. Weitere Informationen dazu finden Sie unter:

Folgendes berechnet Snowflake Ihrem Konto nicht:

Bemerkung

Wenn sich Ihr Snowflake-Konto und Ihr externes Volume in unterschiedlichen Regionen befinden, fallen für Ihr externes Cloudspeicherkonto bei Abfragen der Tabelle Kosten für ausgehende Daten an.

Katalogoptionen

Snowflake unterstützt die folgenden Iceberg-Katalogoptionen:

In der folgenden Tabelle sind die Unterschiede zwischen diesen Katalogoptionen zusammengefasst.

Snowflake als Katalog verwenden

Externen Katalog verwenden

Lesezugriff

Schreibzugriff

Die Schreibunterstützung für extern verwaltete Tabellen befindet sich in der Vorschau.

Schreibzugriff über Regionen hinweg

✔ mit Schreibunterstützung für extern verwaltete Tabellen

Daten- und Metadatenspeicher

Externes Volume (Cloudspeicher)

Externes Volume (Cloudspeicher)

Unterstützung der Snowflake-Plattform

Integriert mit Snowflake Open Catalog

Sie können eine von Snowflake verwaltete Tabelle mit Open Catalog synchronisieren, um eine Tabelle mit anderen Compute Engines abzufragen.

Sie können Snowflake verwenden, um Iceberg-Tabellen abzufragen oder in Iceberg-Tabellen zu schreiben, die von Open Catalog verwaltet werden.

Arbeitet mit dem Snowflake-Katalog SDK

Snowflake als Katalog verwenden

Eine Iceberg-Tabelle, die Snowflake als Iceberg-Katalog verwendet (Snowflake-verwaltete Iceberg-Tabelle), bietet volle Snowflake-Plattformunterstützung mit Lese- und Schreibzugriff. Die Tabellendaten und die Metadaten werden in einem externen Cloudspeicher gespeichert, auf den Snowflake über ein externes Volume zugreift. Snowflake übernimmt die gesamte Lebenszykluswartung der Tabelle, wie z. B. die Komprimierung.

Funktionsweise von Iceberg-Tabellen, die Snowflake als Iceberg-Katalog verwenden

Externen Katalog verwenden

Eine Iceberg-Tabelle, die einen externen Katalog verwendet, bietet eingeschränkte Snowflake-Plattformunterstützung.

Bei diesem Tabellentyp verwendet Snowflake die Katalogintegration, um Informationen zu Ihren Iceberg-Metadaten und Ihrem Iceberg-Schema abzurufen.

Mit dieser Option können Sie eine Iceberg-Tabelle für die folgenden Quellen erstellen:

Snowflake übernimmt keine Lebenszyklusverwaltung für die Tabelle.

Die Tabellendaten und die Metadaten werden in einem externen Cloudspeicher gespeichert, auf den Snowflake über ein externes Volume zugreift.

Bemerkung

Wenn Sie die volle Unterstützung der Snowflake-Plattform für eine Iceberg-Tabelle wünschen, die einen externen Katalog verwendet, können Sie sie so konvertieren, dass Snowflake als Katalog verwendet wird. Weitere Informationen dazu finden Sie unter Apache Iceberg™-Tabelle konvertieren, um Snowflake als Katalog zu verwenden.

Die folgende Abbildung zeigt, wie eine Iceberg-Tabelle eine Katalogintegration mit einem externen Iceberg-Katalog verwendet.

Funktionsweise von Iceberg-Tabellen, die eine Katalogintegration verwenden

Hinweise und Einschränkungen

Die folgenden Hinweise und Einschränkungen gelten für Iceberg-Tabellen; Änderungen vorbehalten:

Clouds und Regionen

  • Iceberg-Tabellen sind für alle Snowflake-Konten, auf allen Cloud-Plattformen und in allen Regionen verfügbar.

  • Cloud-/regionsübergreifende Tabellen werden unterstützt. Weitere Informationen dazu finden Sie unter Cloud-/regionsübergreifende Unterstützung.

Iceberg

  • Version 1 und 2 der Apache-Iceberg-Spezifikation werden unterstützt, mit Ausnahme der folgenden Features:

    • Gleichheitslöschungen auf Zeilenebene. Allerdings unterstützen Tabellen, die Snowflake als Katalog verwenden, Snowflake DELETE-Anweisungen

    • Verwendung der history.expire.min-snapshots-to-keep-Tabelleneigenschaft zur Angabe der standardmäßigen Mindestanzahl der aufzubewahrenden Snapshots. Weitere Informationen dazu finden Sie unter Metadaten und Snapshots.

  • Die Iceberg-Partitionierung mit der Transformationsfunktion bucket wirkt sich auf die Leistung von Abfragen aus, die bedingte Klauseln zum Filtern von Ergebnissen verwenden.

  • Bei Iceberg-Tabellen, die nicht von Snowflake verwaltet werden, sollten Sie Folgendes beachten:

    • Time Travel wird für jeden Snapshot unterstützt, der nach der Tabellenerstellung generiert wurde, solange Sie die Tabelle regelmäßig und vor Ablaufen des Snapshots aktualisieren.

    • Das Konvertieren einer Tabelle, die eine nicht materialisierte Identitätspartitionsspalte enthält, wird nicht unterstützt. Eine nicht materialisierte Identitätspartitionsspalte wird erstellt, wenn eine Tabelle eine Identitätstransformation unter Verwendung einer Quellspalte definiert, die nicht in einer Parquet-Datei existiert.

    • Für Löschen auf Zeilenebene:

      • Snowflake unterstützt nur das Löschen von Positionen.

      • Um die beste Leseleistung zu erzielen, wenn Sie Löschungen auf Zeilenebene verwenden, führen Sie regelmäßig eine Verdichtung und Tabellenpflege durch, um alte Löschdateien zu entfernen. Weitere Informationen dazu finden Sie unter Tabellen warten, die einen externen Katalog verwenden.

      • Die automatische Aktualisierung wird derzeit nicht unterstützt, wenn Sie Positionslöschungen verwenden.

      • Übermäßige Positionslöschungen, insbesondere verwaiste Positionslöschungen, können das Erstellen von Tabellen und Aktualisierungsoperationen verhindern. Um dieses Problem zu vermeiden, führen Sie eine Tabellenwartung durch, um zusätzliche Positionslöschungen zu entfernen.

        Die zu verwendende Methode zur Wartung der Tabellen hängt von Ihrer externen Iceberg-Engine ab. Sie können zum Beispiel die rewrite_data_files-Methode für Spark mit der Option delete-file-threshold oder rewrite-all verwenden. Weitere Informationen dazu finden Sie unter rewrite_data_files in der Apache Iceberg™-Dokumentation.

Dateiformate

  • Iceberg-Tabellen unterstützen Apache Parquet-Dateien.

  • Parquet-Dateien, die den logischen Typ der vorzeichenlosen Ganzzahl verwenden, werden nicht unterstützt.

  • Bei Parquet-Dateien, die den logischen Typ LIST verwenden, sollten Sie Folgendes beachten:

    • Die dreistufige Anmerkungsstruktur mit dem Schlüsselwort element wird unterstützt. Weitere Informationen dazu finden Sie unter Definitionen für logische Parquet-Typen. Wenn Ihre Parquet-Datei ein veraltetes Format mit dem Schlüsselwort array verwendet, müssen Sie Ihre Daten auf der Grundlage des unterstützten Formats neu generieren.

Externe Volumes

  • Sie können nicht über eine Speicherintegration auf die Cloudspeicherorte in externen Volumes zugreifen.

  • Sie müssen für jedes externe Volume, das Sie erstellen, eine separat eine Vertrauensstellung konfigurieren.

  • Sie können ausgehende private Konnektivität verwenden, um auf von Snowflake verwaltete Iceberg-Tabellen und Iceberg-Tabellen zuzugreifen, die eine Katalogintegration für die Objektspeicherung verwenden, aber nicht, um auf Iceberg-Tabellen zuzugreifen, die andere Katalogintegrationen verwenden.

  • Nachdem Sie eine von Snowflake verwaltete Tabelle erstellt haben, ändert sich der Pfad zu ihren Dateien im externen Speicher nicht, selbst wenn Sie die Tabelle umbenennen.

  • Snowflake unterstützt keine externen Volumes mit S3-Bucket-Namen, die Punkte enthalten (z. B. my.s3.bucket). S3 unterstützt SSL nicht für Buckets im „virtual-hosted-style“-Format mit Punkten im Namen, und Snowflake verwendet Pfade im „virtual-hosted-style“-Format und HTTPS für den Zugriff auf Daten in S3.

Metadatendateien

  • Die Metadatendateien identifizieren nicht den jüngsten Snapshot einer Iceberg-Tabelle.

  • Sie können den Speicherort der Datendateien oder des Snapshots nicht mit dem Befehl ALTER ICEBERG TABLE ändern. Um eine dieser Einstellungen zu ändern, müssen Sie die Tabelle neu erstellen (unter Verwendung der Syntax CREATE OR REPLACE ICEBERG TABLE).

  • Für Tabellen, die einen externen Katalog verwenden:

    • Stellen Sie sicher, dass die Manifestdateien keine Duplikate enthalten. Wenn doppelte Dateien im gleichen Snapshot vorhanden sind, gibt Snowflake einen Fehler zurück, der den Pfad der doppelten Datei enthält.

    • Sie können keine Tabelle erstellen, wenn die Parquet Metadaten ungültige UTF-8-Zeichen enthalten. Stellen Sie sicher, dass Ihre Parquet Metadaten mit UTF-8 übereinstimmen.

  • Snowflake erkennt Beschädigungen und Inkonsistenzen in Parquet-Metadaten, die außerhalb von Snowflake erzeugt wurden, und zeigt Probleme durch Fehlermeldungen an.

    Es ist möglich, extern verwaltete (oder konvertierte) Tabellen zu erstellen, zu aktualisieren oder abzufragen, selbst wenn die Metadaten der Tabelle inkonsistent sind. Stellen Sie beim Schreiben von Iceberg-Daten sicher, dass die Metadaten-Statistiken der Tabelle (z. B. RowCount oder NullCount) mit dem Dateninhalt übereinstimmen.

  • Bei Tabellen, die Snowflake als Katalog verwenden, verarbeitet Snowflake DDL-Anweisungen einzeln und erzeugt Metadaten auf eine Weise, die sich von anderen Katalogen unterscheiden kann. Weitere Informationen dazu finden Sie unter DDL-Anweisungen.

Clustering

Die Unterstützung für Clustering hängt vom Typ der Iceberg-Tabelle ab.

Tabellentyp

Anmerkungen

Tabellen, die Snowflake als Iceberg-Katalog verwenden

Legen Sie einen Gruppierungsschlüssel fest, indem Sie entweder den Befehl CREATE ICEBERG TABLE oder den Befehl ALTER ICEBERG TABLE verwenden. Weitere Informationen zum Festlegen oder Verwalten eines Gruppierungsschlüssels finden Sie unter CREATE ICEBERG TABLE (Snowflake als Iceberg-Katalog) und ALTER ICEBERG TABLE.

Tabellen, die einen externen Katalog verwenden

Clustering wird nicht unterstützt.

Konvertierte Tabellen

Snowflake clustert Dateien nur, wenn sie nach der Konvertierung der Tabelle erstellt wurden oder wenn die Dateien seitdem mit einer DML-Anweisung geändert wurden.

Delta

  • Snowflake unterstützt Delta Reader Version 2 und kann alle Tabellen lesen, die von Engines mit Delta Lake Version 2.2.0 geschrieben wurden.

  • Snowflake-Streams werden für Iceberg-Tabellen, die aus Delta-Tabellen-Dateien mit Partitionsspalten erstellt wurden, nicht unterstützt. Allerdings werden Nur-Einfügen-Streams für Tabellen, die aus Delta-Dateien ohne Partitionsspalten erstellt wurden, unterstützt.

  • Aus Delta-Dateien erstellte Iceberg-Tabellen, die vor dem 2024_04-Release-Bundle erstellt wurden, werden in dynamischen Tabellen nicht unterstützt.

  • Snowflake unterstützt die Erstellung von Iceberg-Tabellen aus Delta-Tabellendefinitionen im AWS Glue Data-Katalog nicht.

  • Parquet-Dateien (Datendateien für Delta-Tabellen), die eines der folgenden Features oder Datentypen verwenden, werden nicht unterstützt:

    • Feld-IDs

    • Der Datentyp INTERVAL.

    • Der Datentyp DECIMAL mit einer Präzision von mehr als 38.

    • LIST oder MAP-Typen mit ein- oder zweistufiger Darstellung.

    • Ganzzahl-Typen ohne Vorzeichen (INT(vorzeichenbehaftet = falsch)).

    • Der Datentyp FLOAT16.

  • Sie können den physischen Parquet-Typ int96 für TIMESTAMP verwenden, aber Snowflake unterstützt int96 nicht für TIMESTAMP_NTZ.

  • Weitere Informationen zu Delta-Datentypen und Iceberg-Tabellen finden Sie unter Delta-Datentypen.

  • Snowflake verarbeitet maximal 1000 Delta-Commit-Dateien, wenn Sie eine Tabelle mit CREATE/ALTER … REFRESH aktualisieren. Wenn Ihre Tabelle mehr als 1000 Commit-Dateien enthält, können Sie zusätzliche manuelle Aktualisierungen vornehmen. Der Aktualisierungsvorgang wird jedes Mal an der Stelle fortgesetzt, an der der vorherige Vorgang beendet wurde.

    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.

    Wenn Sie eine bestehende Tabelle aktualisieren, verarbeitet Snowflake Delta-Commit-Dateien, aber keine Checkpoint-Dateien. Wenn die Tabellenwartung veraltete Protokoll- und Datendateien für die Delta-Quelltabelle entfernt, sollten Sie Delta-basierte Iceberg-Tabellen in Snowflake häufiger aktualisieren als für die Aufbewahrungsfrist der Delta-Protokolle und -Datendateien vorgesehen.

  • Die folgenden Funktionen von Delta Lake werden derzeit nicht unterstützt: Zeilenverfolgung, Löschvektordateien, Ändern von Datendateien, Ändern von Metadaten, DataChange, CDC, Protokollentwicklung.

Automatische Aktualisierung

  • Für Katalogintegrationen, die vor Snowflake Version 8.22 (oder 9.2 für Delta-basierte Tabellen) erstellt wurden, müssen Sie den Parameter REFRESH_INTERVAL_SECONDS manuell setzen, bevor Sie die automatische Aktualisierung von Tabellen aktivieren, die von dieser Katalogintegration abhängen. Anweisungen dazu finden Sie unter ALTER CATALOG INTEGRATION … SET AUTO_REFRESH.

  • Für Katalogintegrationen für Objektspeicher wird die automatische Aktualisierung nur für Integrationen mit TABLE_FORMAT = DELTA unterstützt.

  • Bei Tabellen mit häufigen Aktualisierungen kann die Verwendung eines kürzeren Abfrageintervalls (REFRESH_INTERVAL_SECONDS) zu einer Leistungsverschlechterung führen.

Katalog-verknüpfte Datenbanken und automatische Tabellenerkennung

  • Wird nur unterstützt, wenn Sie eine Katalogintegration für Iceberg REST (z. B. Snowflake Open Catalog) verwenden.

  • Abrechnung: Während des Vorschauzeitraums stellt Snowflake keine Rechnung für Katalog-verknüpfte Datenbanken aus. Die Abrechnung beginnt, wenn Katalog-verknüpfte Apache Iceberg™-Datenbanken allgemein verfügbar sind.

  • Um die automatische Tabellenerkennung auf einen bestimmten Satz von Namespaces zu beschränken, verwenden Sie den Parameter ALLOWED_NAMESPACES. Sie können auch den BLOCKED_NAMESPACES-Parameter verwenden, um eine Reihe von Namespaces zu blockieren.

  • Snowflake synchronisiert keine Remote-Katalogzugriffssteuerung (Benutzer oder Rollen).

  • Sie können Schemas oder extern verwaltete Iceberg-Tabellen in einer mit dem Katalog verbundenen Datenbank erstellen. Das Erstellen anderer Snowflake-Objekte wird derzeit nicht unterstützt.

  • Latenz:

    • Bei Datenbanken, die mit 7.500 Namespaces in einem Remote-Katalog verknüpft sind, dauert das Ermitteln von Namespaces und Tabellen etwa eine Stunde.

    • Bei Remote-Katalogen mit 500.000 Tabellen dauert der automatische Aktualisierungsprozess etwa eine Stunde. Für Namespaces mit unterschiedlichen Latenzanforderungen empfehlen wir Ihnen, separate Katalog-verknüpfte Datenbanken zu erstellen. Jede Datenbank sollte auf eine Katalogintegration mit einem geeigneten Intervall für die automatische Aktualisierung (REFRESH_INTERVAL_SECONDS) verweisen.

  • Für Iceberg-Tabellen in einer Katalog-verknüpften Datenbank:

    • Snowflake kopiert keine Eigenschaften von Remote-Katalogtabellen (wie Aufbewahrungsrichtlinien oder Puffer) und unterstützt derzeit nicht das Ändern von Tabelleneigenschaften.

    • Die automatische Aktualisierung ist standardmäßig aktiviert. Wenn die table-uuid einer externen Tabelle und der mit dem Katalog verknüpften Datenbanktabelle nicht übereinstimmen, schlägt die Aktualisierung fehl, und Snowflake löscht die Tabelle aus der mit dem Katalog verknüpften Datenbank. Snowflake ändert die Remote-Tabelle nicht.

    • Wenn Sie eine Tabelle aus dem Remote-Katalog löschen, löscht Snowflake die Tabelle auch aus der mit dem Katalog verbundenen Datenbank. Diese Aktion ist asynchron, sodass Sie die Änderung im Remote-Katalog möglicherweise nicht sofort sehen.

    • Wenn Sie eine Tabelle im Remote-Katalog umbenennen, löscht Snowflake die bestehende Tabelle aus der mit dem Katalog verbundenen Datenbank und erstellt eine Tabelle mit dem neuen Namen.

    • Maskierungsrichtlinien und Tags werden unterstützt. Andere Snowflake-spezifische Features wie Replikation, Klonen und Freigabe werden nicht unterstützt.

    • Das Zeichen, das Sie für den Parameter NAMESPACE_FLATTEN_DELIMITER wählen, kann nicht in Ihren Remote-Namespaces angezeigt werden. Während der automatischen Erkennung überspringt Snowflake jeden Namespace, der das Trennzeichen enthält, und erstellt kein entsprechendes Schema in Ihrer mit dem Katalog verbundenen Datenbank.

    • Wenn Sie etwas anderes als _, $, Großbuchstaben oder Zahlen für den Parameter NAMESPACE_FLATTEN_DELIMITER angeben, müssen Sie den Schemanamen in Anführungszeichen setzen, wenn Sie die Tabelle abfragen.

    • Für Datenbanken, die mit AWS Glue verknüpft sind, müssen Sie Kleinbuchstaben verwenden und die Schema-, Tabellen- und Spaltennamen in doppelte Anführungszeichen setzen. Dies ist auch für andere Iceberg REST-Kataloge erforderlich, die nur Bezeichner in Kleinbuchstaben unterstützen.

      Das folgende Beispiel zeigt eine gültige Abfrage:

      CREATE SCHEMA "s1";
      
      Copy

      Die folgenden Anweisungen sind nicht gültig, da sie Großbuchstaben verwenden oder die doppelten Anführungszeichen weglassen:

      CREATE SCHEMA s1;
      CREATE SCHEMA "Schema1";
      
      Copy
    • Das Verwenden von UNDROP ICEBERG TABLE wird nicht unterstützt.

    • Die Freigabe mit einem Freigabeangebot wird für Tabellen unterstützt, die ein externes Volume verwenden. Die direkte Freigabe wird derzeit nicht unterstützt.

  • Zum Schreiben in Tabellen in einer mit dem Katalog verbundenen Datenbank:

    • Automatisch erzeugte Anmeldeinformationen werden nicht unterstützt.

    • Das Schreiben in Tabellen in verschachtelten Namespaces wird derzeit nicht unterstützt.

Unterstützung für extern verwaltetes Schreiben

  • Snowflake stellt Befehle für die Datendefinitionssprache (DDL) und Datenbearbeitungssprache (DML) für extern verwaltete Tabellen bereit. Sie konfigurieren jedoch Metadaten und die Datenaufbewahrung mit Ihrem externen Katalog und den Tools, die Ihr externer Speicheranbieter bereitstellt. Weitere Informationen dazu finden Sie unter Tabellen, die einen externen Katalog verwenden.

    Bei Schreibvorgängen stellt Snowflake sicher, dass Änderungen in Ihren Remote-Katalog übertragen werden, bevor die Tabelle in Snowflake aktualisiert wird.

  • Wenn Sie eine mit dem Katalog verknüpfte Datenbank verwenden, können Sie die CREATE ICEBERG TABLE-Syntax mit Spaltendefinitionen verwenden, um eine Tabelle in Snowflake und in Ihrem Remote-Katalog zu erstellen. Wenn Sie eine standardmäßige Snowflake-Datenbank verwenden (nicht mit einem Katalog verknüpft), müssen Sie zunächst eine Tabelle in Ihrem Remote-Katalog erstellen. Danach können Sie die CREATE ICEBERG TABLE (Iceberg REST Katalog)-Syntax verwenden, um eine Iceberg-Tabelle in Snowflake zu erstellen und in diese zu schreiben.

  • Für den AWS Glue-Datenkatalog: Wenn Sie eine extern verwaltete Tabelle über Snowflake löschen, werden die zugrunde liegenden Tabellendateien nicht gelöscht. Dieses Verhalten ist spezifisch für die AWS Glue-Datenkatalog-Implementierung.

  • Wenn Sie an der privaten Vorschau dieses Features teilgenommen haben, ist das Löschen von Positionszeilen in Ihrem Konto möglicherweise standardmäßig aktiviert. Führen Sie zur Überprüfung den folgenden Befehl aus:

    SHOW PARAMETERS LIKE 'ENABLE_ICEBERG_MERGE_ON_READ' IN ACCOUNT;
    
    Copy

    Wenn der Parameter in Ihrem Konto sichtbar ist (unabhängig von seinem Wert), sind Positionslöschungen aktiviert. Um das Löschen von Positionen zu deaktivieren, stellen Sie den ENABLE_ICEBERG_MERGE_ON_READ-Parameter auf Tabellen-, Schema- oder Datenbankebene auf FALSE ein.

  • Das Schreiben in extern verwaltete Tabellen mit den folgenden Iceberg-Datentypen wird nicht unterstützt:

    • uuid

    • fixed(L)

  • Die folgenden Features werden derzeit nicht unterstützt, wenn Sie Snowflake verwenden, um in extern verwaltete Iceberg-Tabellen zu schreiben:

    • Anmeldeinformationen über den Katalog.

    • Serverseitige Verschlüsselung (SSE) für GCS oder externe Azure-Volumes.

    • Transaktionen mit mehreren Anweisungen. Snowflake unterstützt nur Autocommit-Transaktionen.

    • Konvertierung in von Snowflake verwaltete Tabellen.

    • Externe Iceberg-Kataloge, die nicht mit dem Iceberg-REST-Protokoll übereinstimmen.

    • Löschungen auf Zeilenebene (merge-on-read).

    • Verwenden der OR REPLACE-Option beim Erstellen einer Tabelle.

    • Verwenden der CREATE TABLE … AS SELECT-Syntax, wenn Sie AWS Glue als Ihren Remote-Katalog verwenden.

  • Beim Erstellen von Schemas in einer mit dem Katalog verbundenen Datenbank müssen Sie Folgendes beachten:

    • Der Befehl CREATE SCHEMA erstellt nur dann einen entsprechenden Namespace in Ihrem Remote-Katalog, wenn Sie eine mit dem Katalog verknüpfte Datenbank verwenden.

    • Die Optionen ALTER und CLONE werden nicht unterstützt.

    • Trennzeichen werden für Schemanamen nicht unterstützt. Es werden nur alphanumerische Schemanamen unterstützt.

  • Sie können eine Zieldateigröße für die Parquet-Dateien einer Tabelle festlegen. Weitere Informationen dazu finden Sie unter Zieldateigröße festlegen.

Zugriff von Drittkunden auf Iceberg-Daten, Metadaten

  • Clients von Drittanbietern können keine Daten an Iceberg-Tabellen anhängen, in Iceberg-Tabellen löschen oder Daten per Upsert einfügen, wenn die Iceberg-Tabellen Snowflake als Katalog verwenden.

Nicht unterstützte Features

Die folgenden Snowflake-Features werden derzeit nicht für alle Iceberg Tabellen unterstützt:

Die folgenden Features werden für extern verwaltete Iceberg-Tabellen nicht unterstützt: