CREATE ICEBERG TABLE (AWS Glue als Iceberg-Katalog)

Erstellt oder ersetzt eine Apache Iceberg™-Tabelle im aktuellen/angegebenen Schema unter Verwendung einer Iceberg-Tabelle, die im AWS Glue Data Catalog registriert ist. Dieser Typ von Iceberg-Tabelle erfordert eine Katalogintegration, um Snowflake mit AWS Glue zu verbinden.

Unter diesem Thema werden Iceberg-Tabellen einfach als „Tabellen“ bezeichnet, es sei denn, die Angabe von Iceberg-Tabellen vermeidet Verwechslungen.

Bemerkung

Bevor Sie eine Tabelle erstellen, müssen Sie das externe Volume erstellen, auf dem die Iceberg-Metadaten und -Datendateien gespeichert werden. Eine Anleitung dazu finden Sie unter Externes Volume konfigurieren.

Sie benötigen auch eine Katalogintegration für die Tabelle. Weitere Informationen dazu finden Sie unter Katalogintegration für AWS Glue konfigurieren.

Siehe auch:

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

Syntax

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

Erforderliche Parameter

table_name

Gibt den Bezeichner (den Namen) für die Tabelle an. Dieser muss für das Schema, in dem die Tabelle erstellt wird, eindeutig sein.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

CATALOG_TABLE_NAME = 'catalog_table_name'

Gibt den Tabellennamen an, wie er vom AWS Glue-Datenkatalog erkannt wird. Ein Beispiel für die Verwendung von CATALOG_TABLE_NAME beim Erstellen einer Iceberg-Tabelle finden Sie unter Beispiele (unter diesem Thema).

Dieser Parameter kann nach dem Erstellen der Tabelle nicht mehr geändert werden.

Optionale Parameter

EXTERNAL_VOLUME = 'external_volume_name'

Gibt den Bezeichner (Name) für das externe Volume an, auf dem die Iceberg-Tabelle ihre Metadatendateien und die Daten im Parquet-Format speichert. In Iceberg-Metadaten- und Iceberg-Manifest-Dateien sind das Tabellenschema, die Partitionen, die Snapshots und andere Metadaten gespeichert.

Wenn Sie diesen Parameter nicht angeben, wird für die Iceberg-Tabelle standardmäßig das externe Volume von Schema, Datenbank oder Konto verwendet. Das Schema hat Vorrang vor der Datenbank, und die Datenbank hat Vorrang vor dem Konto.

CATALOG = 'catalog_integration_name'

Gibt den Bezeichner (Name) der Katalogintegration für diese Tabelle an. Sie müssen eine Katalogintegration angeben, die Sie für AWS Glue konfiguriert haben. Weitere Informationen dazu finden Sie unter Katalogintegration für AWS Glue konfigurieren.

Wenn nichts angegeben wird, ist die Iceberg-Tabelle standardmäßig die Katalogintegration für das Schema, die Datenbank oder das Konto. Das Schema hat Vorrang vor der Datenbank, und die Datenbank hat Vorrang vor dem Konto.

CATALOG_NAMESPACE = 'catalog_namespace'

Gibt optional den Namespace (z. B. my_glue_database) für die AWS Glue-Datenkatalogquelle an und überschreibt den Standard-Namespace des Katalogs, der mit der Katalogintegration angegeben wurde. Durch die Angabe eines Namespace auf Tabellenebene können Sie eine einzige Katalogintegration für AWS Glue verwenden, um Iceberg-Tabellen in verschiedenen Datenbanken zu erstellen.

Wenn nicht angegeben, verwendet die Tabelle den Standard-Katalog-Namespace, der mit der Katalogintegration verbunden ist.

REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }

Gibt an, ob in Abfrageergebnissen ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen (�) ersetzt werden sollen. Sie können diesen Parameter nur für Tabellen festlegen, die einen externen Iceberg-Katalog verwenden.

  • TRUE: Snowflake ersetzt ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

  • FALSE lässt ungültige UTF-8-Zeichen unverändert. Snowflake gibt eine Fehlermeldung an den Benutzer zurück, wenn es auf ein ungültiges UTF-8-Zeichen in einer Parquet-Datendatei stößt.

Wenn nichts angegeben wird, ist die Iceberg-Tabelle standardmäßig die Katalogintegration für das Schema, die Datenbank oder das Konto. Das Schema hat Vorrang vor der Datenbank, und die Datenbank hat Vorrang vor dem Konto.

Standard: FALSE

AUTO_REFRESH = { TRUE | FALSE }

Gibt an, ob Snowflake den mit der Tabelle verbundenen externen Iceberg-Katalog automatisch nach Aktualisierungen der Metadaten abfragen soll, wenn Sie automatische Aktualisierung verwenden. Wenn für den Parameter REFRESH_INTERVAL_SECONDS bei der Katalogintegration kein Wert angegeben wird, verwendet Snowflake ein Standardaktualisierungsintervall von 30 Sekunden.

Standard: FALSE

COMMENT = 'string_literal'

Gibt einen Kommentar für die Tabelle an.

Standard: Kein Wert

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.

Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.

Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE ICEBERG TABLE

Schema

CREATE EXTERNAL VOLUME

Konto

Erforderlich, um ein neues externes Volume zu erstellen.

USAGE

Externes Volume

Erforderlich, um auf ein vorhandenes externes Volume zu verweisen.

CREATE INTEGRATION

Konto

Erforderlich, um eine neuen Katalogintegration zu erstellen.

USAGE

Katalogintegration

Erforderlich, um auf eine bestehende Katalogintegration zu verweisen.

Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Hinweise zur Ausführung dieses Befehls:

    • Wenn Sie Ihr externes Volume oder die Katalogintegration mit einem Bezeichner in doppelten Anführungszeichen erstellt haben, müssen Sie den Bezeichner genau so wie erstellt (einschließlich der doppelten Anführungszeichen) in Ihrer CREATE ICEBERG TABLE-Anweisung angeben. Fehlende Anführungszeichen können zu einem Object does not exist-Fehler (oder einer ähnlichen Art von Fehler) führen.

      Ein Beispiel dazu finden Sie im Abschnitt Beispiele (unter diesem Thema).

  • Hinweise zum Erstellen von Tabellen:

    • Ein Schema darf keine Tabellen und/oder Ansichten mit gleichem Namen enthalten. Beim Erstellen einer Tabelle:

      • Wenn im Schema bereits eine Ansicht mit dem gleichen Namen vorhanden ist, wird ein Fehler zurückgegeben und die Tabelle nicht erstellt.

      • Wenn bereits eine Tabelle mit dem gleichen Namen im Schema existiert, wird ein Fehler zurückgegeben, und die Tabelle wird nicht erstellt, es sei denn, das optionale Schlüsselwort OR REPLACE ist im Befehl enthalten.

    • CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.

      Das bedeutet, dass alle Abfragen, die parallel zur Operation CREATE OR REPLACE ICEBERG TABLE ausgeführt werden, entweder die alte oder die neue Version der Tabelle verwenden.

    • Ähnlich wie bei reservierten Schlüsselwörtern können ANSI-reservierte Funktionsnamen (z. B. CURRENT_DATE, CURRENT_TIMESTAMP) nicht als Spaltennamen verwendet werden.

    • Wenn Sie eine Tabelle neu erstellen (mit dem optionalen Schlüsselwort OR REPLACE), wird deren Verlauf gelöscht, wodurch alle Streams auf der Tabelle veraltet sind. Ein veralteter Stream ist unlesbar.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Beispiele

Erstellen Sie eine Iceberg-Tabelle mit AWS Glue als Katalog

In diesem Beispiel wird eine Iceberg-Tabelle erstellt, die den AWS Glue-Datenkatalog verwendet. Um den Standard-Katalog-Namespace zu überschreiben und einen Katalog-Namespace für die Tabelle festzulegen, verwendet die Anweisung den optionalen Parameter CATALOG_NAMESPACE.

CREATE ICEBERG TABLE glue_iceberg_table
  EXTERNAL_VOLUME='glue_catalog_volume'
  CATALOG='glue_catalog_integration'
  CATALOG_TABLE_NAME='my_glue_catalog_table'
  CATALOG_NAMESPACE='icebergcatalogdb2';
Copy

Externes Volume oder Katalogintegration mit einem in Anführungszeichen gesetzten Bezeichner angeben

In diesem Beispiel wird eine Iceberg-Tabelle mit einem externen Volume und einer Katalogintegration erstellt, deren Bezeichner doppelte Anführungszeichen enthalten. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist die Groß-/Kleinschreibung zu beachten, sie enthalten auch häufig Sonderzeichen.

Die Bezeichner "glue_volume_1" und "glue_catalog_integration_1" werden genau so angegeben, wie sie erstellt wurden (einschließlich der doppelten Anführungszeichen). Fehlende Anführungszeichen können zu einem Object does not exist-Fehler (oder einer ähnlichen Art von Fehler) führen.

Weitere Informationen dazu finden Sie unter Bezeichner mit doppelten Anführungszeichen.

CREATE OR REPLACE ICEBERG TABLE itable_with_quoted_catalog
  EXTERNAL_VOLUME = '"glue_volume_1"'
  CATALOG = '"glue_catalog_integration_1"'
  CATALOG_TABLE_NAME='my_glue_catalog_table'
  CATALOG_NAMESPACE='icebergcatalogdb2';
Copy