Abfrage einer Tabelle in Snowflake Open Catalog mit Snowflake¶
Um eine in Snowflake Open Catalog registrierte Tabelle mit Snowflake abzufragen, können Sie eine Apache Iceberg™-Tabelle erstellen, die einen externen Katalog verwendet.
Die Tabelle stellt die Iceberg-Tabelle in Snowflake Open Catalog dar und bietet einen schreibgeschützten Zugriff.
Voraussetzungen¶
Bevor Sie beginnen, benötigen Sie Folgendes:
Eine Iceberg-Tabelle, die im Open Catalog registriert ist.
Eine Dienstverbindung, über die Snowflake eine Verbindung zu Open Catalog herstellen kann. Sie können eine bestehende Dienstverbindung verwenden, für die Sie Rollen und Berechtigungen eingerichtet haben, oder Eine Dienstverbindung konfigurieren für Snowflake. Wenn Sie eine neue Dienstverbindung konfigurieren, müssen Sie auch die Zugriffssteuerung für diese Verbindung konfigurieren.
Schritt 1: Externes Volume in Snowflake erstellen¶
Wenn Sie noch kein externes Volume haben, beginnen Sie mit der Erstellung eines solchen in Snowflake, das Zugriff auf den Speicherort in der Cloud bietet, an dem Sie Ihre Tabellendaten und Metadaten speichern möchten.
Füllen Sie die Anweisungen für Ihren Cloudspeicherdienst aus:
Schritt 2: Eine Katalog-Integration für Open Catalog erstellen¶
Als Nächstes verwenden Sie den Befehl CREATE CATALOG INTEGRATION, um eine Katalogintegration in Snowflake zu erstellen, die OAuth verwendet, um sich unter Verwendung Ihrer Anmeldedaten mit Open Catalog mit zu verbinden. Der Parameter CATALOG_NAMESPACE ist optional. Wenn Sie ihn jedoch nicht bei der Katalogintegration angeben, müssen Sie ihn angeben, wenn Sie eine extern verwaltete Tabelle erstellen. Dieser Abschnitt enthält die folgenden Beispiele:
Wenn Sie keine private Konnektivität für den eingehenden Netzwerk-Datenverkehr in Open Catalog verwenden, sehen Sie sich das Beispiel für eine Snowflake-Katalogintegration an, die das öffentliche Internet nutzt.
Wenn Sie private Konnektivität für den eingehenden Netzwerk-Datenverkehr in Open Catalog verwenden, sehen Sie sich das Beispiel für die Snowflake-Katalogintegration an, die eine private IP-Adresse verwendet.
Beispiel: Katalogintegration, die das öffentliche Internet nutzt¶
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI = 'https://<orgname>-<my-snowflake-open-catalog-account-name>.snowflakecomputing.com/polaris/api/catalog'
CATALOG_NAME = 'myOpenCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my-client-id'
OAUTH_CLIENT_SECRET = 'my-client-secret'
OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
)
ENABLED = TRUE;
Bemerkung
Um Ihren Snowflake-Organisationsnamen (
<orgname>
) zu finden, folgen Sie den Schritten unter Suchen von Organisations- und Kontonamen eines Kontos.Um
<my-snowflake-open-catalog-account-name
zu finden, siehe Den Kontonamen für ein Snowflake Open Catalog-Konto finden in der Dokumentation Snowflake Open Catalog.
Beispiel: Katalogintegration, die eine private IP-Adresse verwendet¶
CREATE OR REPLACE CATALOG INTEGRATION open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE= 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI = 'https://<open_catalog_privatelink_account_url>/polaris/api/catalog'
CATALOG_API_TYPE = PRIVATE
CATALOG_NAME = 'myOpenCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'my-client-id'
OAUTH_CLIENT_SECRET = 'my-client-secret'
OAUTH_ALLOWED_SCOPES = ( 'PRINCIPAL_ROLE:ALL' )
)
ENABLED = TRUE;
Bemerkung
Für <open_catalog_privatelink_account_url>
geben Sie einen der folgenden Werte ein:
PrivateLink-Konto-URL
URL für regionenloses PrivateLink-Konto
Um diese Werte zu erhalten, rufen Sie die Einstellungen Ihres Open Catalog-Kontos für private Konnektivität ab. Einzelheiten finden Sie in den Anweisungen für die Cloud-Plattform, auf der Ihr Open Catalog-Konto gehostet wird:
Schritt 3: Eine extern verwaltete Tabelle erstellen¶
Erstellen Sie eine Iceberg-Tabelle in Snowflake unter des externen Volumes und der Katalogverbindung, die Sie zuvor konfiguriert haben.
Geben Sie für CATALOG_TABLE_NAME den Tabellennamen so an, wie er in Open Catalog erscheint.
CREATE ICEBERG TABLE open_catalog_iceberg_table
CATALOG = 'open_catalog_int'
EXTERNAL_VOLUME = 'my_external_volume'
CATALOG_TABLE_NAME = 'my_iceberg_table';
Sie können optional automatische Aktualisierungen der Tabellenmetadaten aktivieren, indem Sie AUTO_REFRESH = TRUE
angeben. Weitere Informationen dazu finden Sie unter Apache Iceberg™-Tabellen automatisch aktualisieren. Wenn Sie bei der Katalogintegration, die Sie im vorherigen Schritt erstellt haben, keinen CATALOG_NAMESPACE angegeben haben, müssen Sie diesen Parameter angeben, um einen Namespace für die Tabelle festzulegen.
Bemerkung
Um eine Liste von Tabellen oder Namespaces in Ihrem Remote-Katalog abzurufen, können Sie die folgenden Funktionen verwenden:
Schritt 4: Die Tabelle mit Snowflake abfragen¶
Sie können nun Snowflake verwenden, um die Tabelle in Open Catalog abzufragen. Sie können die Abfrageergebnisse auch mit anderen Snowflake-Tabellen verknüpfen.
SELECT id, date
FROM open_catalog_iceberg_table
LIMIT 10;