CREATE CATALOG INTEGRATION (Apache Iceberg™ REST)¶
Erstellt eine neue Katalogintegration im Konto oder ersetzt eine bestehende Katalogintegration für Apache Iceberg™-Tabellen, die in einem Remote-Katalog verwaltet wird, der mit der Open Source Apache Iceberg™ REST OpenAPI Spezifikation übereinstimmt.
Bemerkung
Um eine Integration für Snowflake Open Catalog zu erstellen, lesen Sie stattdessen CREATE CATALOG INTEGRATION (Snowflake Open Catalog).
- Siehe auch:
ALTER CATALOG INTEGRATION , DROP CATALOG INTEGRATION , SHOW CATALOG INTEGRATIONS, DESCRIBE CATALOG INTEGRATION
Syntax¶
CREATE [ OR REPLACE ] CATALOG INTEGRATION [ IF NOT EXISTS ] <name>
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = '<namespace>'
REST_CONFIG = (
restConfigParams
)
REST_AUTHENTICATION = (
restAuthenticationParams
)
ENABLED = { TRUE | FALSE }
[ REFRESH_INTERVAL_SECONDS = <value> ]
[ COMMENT = '<string_literal>' ]
Wobei:
restConfigParams ::=
CATALOG_URI = '<rest_api_endpoint_url>'
PREFIX = '<prefix>'
WAREHOUSE = '<warehouse_name>'
CATALOG_API_TYPE = { PUBLIC | AWS_API_GATEWAY | AWS_PRIVATE_API_GATEWAY }
Abhängig von Ihrer Authentifizierungsmethode finden Sie unter restAuthenticationParams
folgende Informationen:
OAuth
restAuthenticationParams (for OAuth) ::=
TYPE = OAUTH
OAUTH_TOKEN_URI = 'https://<token_server_uri>'
OAUTH_CLIENT_ID = '<oauth_client_id>'
OAUTH_CLIENT_SECRET = '<oauth_client_secret>'
OAUTH_ALLOWED_SCOPES = ('<scope_1>', '<scope_2>')
Bearer-Token
restAuthenticationParams (for Bearer token) ::=
TYPE = BEARER
BEARER_TOKEN = '<bearer_token>'
SigV4
restAuthenticationParams (for SigV4) ::=
TYPE = SIGV4
SIGV4_IAM_ROLE = '<iam_role_arn>'
SIGV4_SIGNING_REGION = '<region>'
Parameter¶
name
Zeichenfolge, die den Bezeichner (den Namen) für die Katalogintegration angibt. Muss in Ihrem Konto 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_SOURCE = ICEBERG_REST
Gibt an, dass die Katalogquelle ein REST-Katalog ist, der mit der Apache Iceberg-REST-Spezifikation konform ist.
TABLE_FORMAT = ICEBERG
Gibt ICEBERG als das vom Katalog bereitgestellte Tabellenformat an.
CATALOG_NAMESPACE = 'namespace'
Gibt den Namespace im externen Katalog an. Snowflake verwendet diesen Namespace für alle Iceberg-Tabellen, die mit dieser Katalogintegration verbunden.
Sie können diesen Wert außer Kraft setzen, indem Sie einen Namespace auf Tabellenebene angeben, wenn Sie eine Tabelle erstellen.
ENABLED = { TRUE | FALSE }
Gibt an, ob die Katalogintegration für Iceberg-Tabellen verwendet werden kann.
TRUE
ermöglicht Benutzern das Erstellen neuer Iceberg-Tabelle, die auf diese Integration verweisen.FALSE
verhindert, dass Benutzer neue Iceberg-Tabelle erstellen, die auf diese Integration verweisen.
REFRESH_INTERVAL_SECONDS = value
Legt die Anzahl der Sekunden fest, die Snowflake zwischen den Versuchen wartet, den externen Iceberg-Katalog nach Aktualisierungen der Metadaten für die automatische Aktualisierung abzufragen.
Werte: 30 bis einschließlich 86.400
Standard: 30 Sekunden.
COMMENT = 'string_literal'
Zeichenfolge (Literal), die einen Kommentar zur Integration enthält.
Standard: Kein Wert
REST Konfigurationsparameter (restConfigParams)¶
CATALOG_URI = 'rest_api_endpoint_url'
Die Endpunkt-URL für Ihre Katalog-REST-API.
PREFIX
Gibt optional ein Präfix an, das an alle API-Routen angehängt wird.
WAREHOUSE
Gibt optional den Speicherort oder den Bezeichner an, der von Ihrem Remote-Katalogdienst angefragt werden soll.
CATALOG_API_TYPE = { PUBLIC | AWS_API_GATEWAY | AWS_PRIVATE_API_GATEWAY }
Gibt optional den Verbindungstyp für die Katalog-API an.
Standard:
PUBLIC
REST Parameter für die Authentifizierung (restAuthenticationParams)¶
OAuth¶
TYPE = OAUTH
Legt OAuth als den Authentifizierungstyp fest, den Snowflake für die Verbindung mit Ihrem Iceberg-REST-Katalog verwenden soll.
OAUTH_TOKEN_URI = token_server_uri
Optionale URL für Ihren Identitätsanbieter Wenn nichts angegeben wird, geht Snowflake davon aus, dass der Anbieter des Remotekatalogs der OAuth-Identitätsanbieter ist.
OAUTH_CLIENT_ID = oauth_client_id
Ihr OAuth2-Client ID.
OAUTH_CLIENT_SECRET = oauth_client_secret
Ihr OAuth2-Client-Geheimnis.
OAUTH_ALLOWED_SCOPES = ( 'scope_1', 'scope_2' )
Der Bereich des OAuth-Tokens. Die Iceberg-REST-API-Spezifikation enthält nur einen Bereich, aber Kataloge können in ihrer Implementierung mehr als einen Bereich unterstützen.
Bearer-Token¶
TYPE = BEARER
Legt ein Bearer-Token als den Authentifizierungstyp fest, den Snowflake für die Verbindung mit Ihrem Iceberg REST-Katalog verwendet.
BEARER_TOKEN = bearer_token
Das Token für Ihren Identitätsanbieter. Sie können alternativ ein persönliches Zugriffstoken (PAT) angeben.
SigV4¶
TYPE = SIGV4
Legt die Signatur Version 4 als Authentifizierungstyp fest, den Snowflake für die Verbindung mit Ihrem Iceberg-REST-Katalog verwenden soll.
SIGV4_IAM_ROLE = 'iam_role_arn'
Gibt den Amazon Resource-Namen (ARN) für eine IAM-Rolle an, die die Berechtigung hat, auf Ihre REST-API im API-Gateway zuzugreifen.
SIGV4_SIGNING_REGION = 'region'
Gibt optional die AWS-Region an, die mit Ihrer API im API-Gateway verbunden ist. Wenn Sie diesen Parameter nicht angeben, verwendet Snowflake die Region, in der Ihr Snowflake-Konto eingerichtet ist.
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 INTEGRATION |
Konto |
Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. |
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¶
Katalogintegrationen bieten einen schreibgeschützten Zugriff auf externe Iceberg-Kataloge.
Sie können eine bestehende Katalogintegration nicht ändern; verwenden Sie stattdessen eine CREATE OR REPLACE CATALOG INTEGRATION-Anweisung.
Sie können eine Katalogintegration nicht löschen oder ersetzen, wenn eine oder mehrere Apache Iceberg™-Tabellen mit der Katalogintegration verbunden sind.
Um die Tabellen anzuzeigen, die von einer Katalogintegration abhängen, können Sie den Befehl SHOW ICEBERG TABLES und eine Abfrage mit RESULT_SCAN verwenden, die nach der Spalte
catalog_name
filtert.Bemerkung
Beim Spaltenbezeichner (
catalog_name
) wird zwischen Groß- und Kleinschreibung unterschieden. Geben Sie den Spaltenbezeichner genau so an, wie er in der Ausgabe von SHOW ICEBERG TABLES erscheint.Beispiel:
SHOW ICEBERG TABLES; SELECT * FROM TABLE( RESULT_SCAN( LAST_QUERY_ID() ) ) WHERE "catalog_name" = 'my_catalog_integration_1';
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.
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.
Beispiele¶
Das folgende Beispiel erstellt eine REST-Katalogintegration, die OAuth zur Verbindung mit Tabular verwendet.
CREATE OR REPLACE CATALOG INTEGRATION tabular_catalog_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'default'
REST_CONFIG = (
CATALOG_URI = 'https://api.tabular.io/ws'
WAREHOUSE = '<tabular_warehouse_name>'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_TOKEN_URI = 'https://api.tabular.io/ws/v1/oauth/tokens'
OAUTH_CLIENT_ID = '<oauth_client_id>'
OAUTH_CLIENT_SECRET = '<oauth_client_secret>'
OAUTH_ALLOWED_SCOPES = ('catalog')
)
ENABLED = TRUE;