Apache Iceberg™-Tabelle in Snowflake erstellen

Erstellen Sie Apache Iceberg™-Tabellen in Snowflake für verschiedene Katalogoptionen. Sie können eine Iceberg-Tabelle mit dem Befehl CREATE ICEBERG TABLE erstellen.

Bemerkung

Snowflake-verwaltet

Um eine Iceberg-Tabelle mit Snowflake als Katalog zu erstellen, müssen Sie ein externes Volume und einen Basis-Speicherort (Verzeichnis auf dem externen Volume) angeben, in den Snowflake Tabellendaten und Metadaten schreiben kann. Eine Anleitung zum Erstellen eines externen Volumes finden Sie unter Externes Volume konfigurieren.

Um Tabellenspalten zu definieren, können Sie Iceberg-Datentypen verwenden. Weitere Informationen dazu finden Sie unter Datentypen für Apache Iceberg™-Tabellen.

Im folgenden Beispiel wird eine Iceberg-Tabelle mit Snowflake als Iceberg-Katalog erstellt.

CREATE OR REPLACE ICEBERG TABLE my_iceberg_table (
    boolean_col boolean,
    int_col int,
    long_col long,
    float_col float,
    double_col double,
    decimal_col decimal(10,5),
    string_col string,
    fixed_col fixed(10),
    binary_col binary,
    date_col date,
    time_col time,
    timestamp_ntz_col timestamp_ntz(6),
    timestamp_ltz_col timestamp_ltz(6)
  )
  CATALOG = 'SNOWFLAKE'
  EXTERNAL_VOLUME = 'my_ext_vol'
  BASE_LOCATION = 'my/relative/path/from/extvol';
Copy

Bemerkung

Alternativ können Sie auch die Syntaxvarianten verwenden. Weitere Informationen dazu finden Sie unter CREATE TABLE … AS SELECT und CREATE ICEBERG TABLE … LIKE.

Nachdem Sie eine Tabelle erstellt haben, die Snowflake als Katalog verwendet, können Sie Aktionen wie die folgenden durchführen:

Weitere Informationen dazu finden Sie unter Apache Iceberg™-Tabellen verwalten.

Externer Katalog

Um eine Iceberg-Tabelle zu erstellen, die einen externen Katalog oder gar keinen Katalog verwendet, müssen Sie ein externes Volume und eine Katalogintegration angeben. Wenn Sie einen externen Iceberg-Katalog verwenden, müssen Sie möglicherweise zusätzliche Parameter angeben. Wenn Sie zum Beispiel AWS Glue als Katalog verwenden, müssen Sie den Namen einer Katalogtabelle angeben.

Wenn Sie eine Iceberg-Tabelle erstellen, die einen externen Katalog verwendet, führt Snowflake eine erste Aktualisierung der Metadaten aus. Sie können die Metadaten der Tabelle auch manuell mit dem Befehl ALTER ICEBERG TABLE … REFRESH aktualisieren, um die Metadaten mit den jüngsten Tabellenänderungen zu synchronisieren. Weitere Informationen dazu finden Sie unter Tabellen-Metadaten aktualisieren.

AWS Glue

Wichtig

Sie müssen eine Katalogintegration für AWS Glue konfigurieren, um eine Vertrauensstellung zwischen Snowflake und dem Glue-Datenkatalog herzustellen. Eine Anleitung dazu finden Sie unter Katalogintegration für AWS Glue konfigurieren.

Im folgenden Beispiel wird eine Iceberg-Tabelle erstellt, die den AWS Glue-Datenkatalog verwendet, wobei der Name einer Katalogintegration angegeben wird, die für AWS Glue (glueCatalogInt) konfiguriert wurde, sowie ein Wert für die Eigenschaft CATALOG_TABLE_NAME.

CREATE ICEBERG TABLE myGlueTable
  EXTERNAL_VOLUME='glueCatalogVolume'
  CATALOG='glueCatalogInt'
  CATALOG_TABLE_NAME='myGlueTable';
Copy

Nachdem Sie eine Tabelle mit AWS Glue als Katalog erstellt haben, können Sie Aktionen wie die folgenden durchführen:

Iceberg-Dateien im Objektspeicher

Im folgenden Beispiel wird eine Iceberg-Tabelle aus Iceberg-Metadaten in einem externen Cloudspeicher erstellt, wobei ein relativer Pfad zu den Tabellen-Metadaten auf dem externen Volume (METADATA_FILE_PATH) angegeben wird.

CREATE ICEBERG TABLE myIcebergTable
  EXTERNAL_VOLUME='icebergMetadataVolume'
  CATALOG='icebergCatalogInt'
  METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';
Copy

Delta-Dateien im Objektspeicher

Der folgende Beispielbefehl erstellt eine Iceberg-Tabelle aus Delta-Tabellendateien im Objektspeicher.

Im wird Beispiel ein externes Volume angegeben, das mit dem Cloud-Speicherort der Delta-Tabellendateien verbunden ist, eine Katalogintegration, die für Delta konfiguriert ist, und einen Wert für den erforderlichen Parameter BASE_LOCATION.

CREATE ICEBERG TABLE my_delta_iceberg_table
  CATALOG = delta_catalog_integration
  EXTERNAL_VOLUME = delta_external_volume
  BASE_LOCATION = 'relative/path/from/ext/vol/';
Copy

Wenn die Delta-Tabelle ein Partitionierungsschema verwendet, interpretiert Snowflake das Schema automatisch aus dem Delta-Protokoll.

Apache Iceberg™ REST-Katalog

Das folgende Beispiel erstellt eine Tabelle, die einen Remote-Iceberg-REST-Katalog verwendet.

CREATE OR REPLACE ICEBERG TABLE my_iceberg_table
  EXTERNAL_VOLUME = 'my_external_volume'
  CATALOG = 'my_rest_catalog_integration'
  CATALOG_TABLE_NAME = 'my_remote_table';
Copy