CREATE ICEBERG TABLE

Erzeugt oder ersetzt eine Apache Iceberg™-Tabelle im aktuellen/angegebenen Schema.

Siehe auch:

ALTER ICEBERG TABLE, DROP ICEBERG TABLE, SHOW ICEBERG TABLES, DESCRIBE ICEBERG TABLE

Syntax

Dieser Abschnitt bietet einen Überblick über die Syntax für alle Typen von Iceberg-Tabellen. Die Syntax zum Erstellen einer Iceberg-Tabelle unterscheidet sich erheblich, je nachdem, ob Sie Snowflake als Iceberg-Katalog oder einen externen Iceberg-Katalog verwenden.

Syntax, Parameterbeschreibungen, Nutzungshinweise und Beispiele für bestimmte Anwendungsfälle finden Sie auf den folgenden Seiten:

Snowflake als Iceberg-Katalog

CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name> ( -- Column definition <col_name> <col_type> [ inlineConstraint ] [ NOT NULL ] [ [ WITH ] MASKING POLICY <policy_name> [ USING ( <col_name> , <cond_col1> , ... ) ] ] [ [ WITH ] PROJECTION POLICY <policy_name> ] [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ] [ COMMENT '<string_literal>' ] -- Additional column definitions [ , <col_name> <col_type> [ ... ] ] -- Out-of-line constraints [ , outoflineConstraint [ ... ] ] ) [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ] [ EXTERNAL_VOLUME = '<external_volume_name>' ] [ CATALOG = 'SNOWFLAKE' ] [ BASE_LOCATION = '<directory_for_table_files>' ] [ TARGET_FILE_SIZE = '{ AUTO | 16MB | 32MB | 64MB | 128MB }' ] [ CATALOG_SYNC = '<open_catalog_integration_name>'] [ STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED } ] [ DATA_RETENTION_TIME_IN_DAYS = <integer> ] [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ] [ CHANGE_TRACKING = { TRUE | FALSE } ] [ COPY GRANTS ] [ COMMENT = '<string_literal>' ] [ [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , <col_name> ... ] ) ] [ [ WITH ] AGGREGATION POLICY <policy_name> ] [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ] [ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ] 
Copy

Wobei:

inlineConstraint ::= [ CONSTRAINT <constraint_name> ] { UNIQUE | PRIMARY KEY | [ FOREIGN KEY ] REFERENCES <ref_table_name> [ ( <ref_col_name> ) ] } [ <constraint_properties> ] 
Copy

Weitere Details zu Inline-Einschränkungen finden Sie unter CREATE | ALTER TABLE … CONSTRAINT.

outoflineConstraint ::= [ CONSTRAINT <constraint_name> ] { UNIQUE [ ( <col_name> [ , <col_name> , ... ] ) ] | PRIMARY KEY [ ( <col_name> [ , <col_name> , ... ] ) ] | [ FOREIGN KEY ] [ ( <col_name> [ , <col_name> , ... ] ) ] REFERENCES <ref_table_name> [ ( <ref_col_name> [ , <ref_col_name> , ... ] ) ] } [ <constraint_properties> ] 
Copy

Bemerkung

  • Snowflake repräsentiert Spalten, die als PRIMARY KEY definiert sind, als Bezeichnerfelder in den Iceberg-Metadaten dar. Die IDs für diese Spalten werden in den Metadaten als Bezeichnerfeld-IDs eingefügt.

  • Snowflake erzwingt keine NOT NULL- und UNIQUE-Einschränkungen auf PRIMARY KEY-Spalten für Iceberg-Tabellen.

Weitere Details zu Out-of-Line-Einschränkungen finden Sie unter CREATE | ALTER TABLE … CONSTRAINT.

Weitere Informationen dazu finden Sie unter CREATE ICEBERG TABLE (Snowflake als Iceberg-Katalog).

CREATE ICEBERG TABLE … AS SELECT (auch als CTAS bezeichnet)

CREATE [ OR REPLACE ] ICEBERG TABLE <table_name> [ ( <col_name> [ <col_type> ] , <col_name> [ <col_type> ] , ... ) ] [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ] [ EXTERNAL_VOLUME = '<external_volume_name>' ] [ CATALOG = 'SNOWFLAKE' ] [ BASE_LOCATION = '<relative_path_from_external_volume>' ] [ COPY GRANTS ] [ ... ] AS SELECT <query> 
Copy

Weitere Informationen dazu finden Sie unter CREATE ICEBERG TABLE … AS SELECT.

CREATE ICEBERG TABLE … LIKE

CREATE [ OR REPLACE ] ICEBERG TABLE <table_name> LIKE <source_table> [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ] [ COPY GRANTS ] [ ... ] 
Copy

Weitere Informationen dazu finden Sie unter CREATE ICEBERG TABLE … LIKE.

Externer Iceberg-Katalog

Iceberg REST (einschließlich Snowflake Open Catalog)

CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name> [ EXTERNAL_VOLUME = '<external_volume_name>' ] [ CATALOG = '<catalog_integration_name>' ] CATALOG_TABLE_NAME = '<rest_catalog_table_name>' [ CATALOG_NAMESPACE = '<catalog_namespace>' ] [ TARGET_FILE_SIZE = '{ AUTO | 16MB | 32MB | 64MB | 128MB }' ] [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ] [ AUTO_REFRESH = { TRUE | FALSE } ] [ COMMENT = '<string_literal>' ] [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ] [ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ] 
Copy

Weitere Informationen dazu finden Sie unter CREATE ICEBERG TABLE (Iceberg REST Katalog).

Iceberg REST in einer mit dem Katalog verbundenen Datenbank

CREATE ICEBERG TABLE [ IF NOT EXISTS ] <table_name> [ --Column definition <col_name> <col_type> [ [ WITH ] MASKING POLICY <policy_name> [ USING ( <col_name> , <cond_col1> , ... ) ] ] -- Additional column definitions [ , <col_name> <col_type> [ ... ] ] ] [ PARTITION BY ( partitionExpression [ , partitionExpression , ... ] ) ] [ TARGET_FILE_SIZE = '{ AUTO | 16MB | 32MB | 64MB | 128MB }' ] [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ] [ AUTO_REFRESH = { TRUE | FALSE } ] [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ] [ COPY GRANTS ] [ COMMENT = '<string_literal>' ] [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ] 
Copy

Weitere Informationen dazu finden Sie unter CREATE ICEBERG TABLE (Iceberg REST Katalog).

Delta-Dateien

CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name> [ EXTERNAL_VOLUME = '<external_volume_name>' ] [ CATALOG = '<catalog_integration_name>' ] BASE_LOCATION = '<relative_path_from_external_volume>' [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ] [ AUTO_REFRESH = { TRUE | FALSE } ] [ COMMENT = '<string_literal>' ] [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ] [ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ] 
Copy

Weitere Informationen dazu finden Sie unter CREATE ICEBERG TABLE (Delta-Dateien im Objektspeicher).

Iceberg-Dateien im Objektspeicher

CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name> [ EXTERNAL_VOLUME = '<external_volume_name>' ] [ CATALOG = '<catalog_integration_name>' ] METADATA_FILE_PATH = '<metadata_file_path>' [ REPLACE_INVALID_CHARACTERS = { TRUE | FALSE } ] [ COMMENT = '<string_literal>' ] [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ] [ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ] 
Copy

Weitere Informationen dazu finden Sie unter CREATE ICEBERG TABLE (Iceberg-Dateien im Objektspeicher).