Automatisches Aktualisieren externer Tabellen für Google Cloud Storage¶
Unter diesem Thema finden Sie eine Anleitung zum Auslösen der Aktualisierung der Metadaten von externen Tabellen mithilfe von Google Cloud Pub/Sub-Meldungen für Google Cloud Storage-Ereignisse (GCS).
Bemerkung
Um die unter diesem Thema beschriebenen Schritte ausführen zu können, müssen Sie eine Rolle verwenden, die über die CREATE STAGE- und die CREATE EXTERNAL TABLE-Berechtigung für ein Schema verfügt.
Außerdem benötigen Sie Administratorzugriff auf die Google Cloud Platform (GCP). Wenn Sie kein GCP-Administrator sind, bitten Sie Ihren GCP-Administrator, die Schritte zur Erfüllung der Voraussetzungen auszuführen.
Beachten Sie, dass nur OBJECT_DELETE
- und OBJECT_FINALIZE
-Ereignisse die Aktualisierung der Metadaten von externen Tabellen auslösen. Snowflake empfiehlt, nur unterstützte Ereignisse für externe Tabelle zu senden, um Kosten, Ereignisrauschen und Latenz zu reduzieren.
Unter diesem Thema:
Unterstützung von Cloudplattformen¶
Das Auslösen automatischer Aktualisierungen von externen Metadaten mit GCS Pub/Sub-Ereignismeldungen wird nur von Snowflake-Konten unterstützt, die auf folgenden Cloudplattformen gehostet werden:
Amazon Web Services (AWS)
Google Cloud Platform
Die Anweisungen zum Konfigurieren dieser Unterstützung sind für Konten auf beiden Cloudhosting-Plattformen identisch.
Konfigurieren des sicheren Zugriffs auf Cloudspeicher¶
Bemerkung
Wenn Sie bereits den sicheren Zugriff auf den GCS-Bucket konfiguriert haben, in dem Ihre Datendateien gespeichert sind, können Sie diesen Abschnitt überspringen.
In diesem Abschnitt wird beschrieben, wie Sie ein Snowflake-Speicherintegrationsobjekt konfigurieren, um die Authentifizierungsverantwortung für den Cloudspeicher an eine Snowflake-Entität für die Identitäts- und Zugriffsverwaltung (IAM) zu delegieren.
In diesem Abschnitt wird beschrieben, wie Sie mit Speicherintegrationen dafür sorgen können, dass Snowflake Daten aus einem Google Cloud Storage-Bucket lesen und in einen solchen Bucket schreiben kann, auf den in einem externen (d. h. Cloud Storage) Stagingbereich verwiesen wird. Integrationen sind benannte First-Class-Snowflake-Objekte, bei denen keine expliziten Cloudanbieter-Anmeldeinformationen wie geheime Schlüssel oder Zugriffstoken übergeben werden müssen. Stattdessen verweisen Integrationsobjekte auf ein Cloud Storage-Dienstkonto. Ein Administrator in Ihrem Unternehmen gewährt die Dienstkontoberechtigungen im Cloud Storage-Konto.
Administratoren können Benutzer auch auf einen bestimmten Satz von Cloud Storage-Buckets (und optionale Pfade) beschränken, auf die von externen Stagingbereichen zugegriffen wird, die die Integration verwenden.
Bemerkung
Um die Anweisungen in diesem Abschnitt ausführen zu können, müssen Sie als Projekteditor auf Ihr Cloud Storage-Projekt zugreifen können. Wenn Sie kein Projekteditor sind, bitten Sie Ihren Cloud Storage-Administrator, diese Aufgaben auszuführen.
Die folgende Abbildung zeigt den Integrationsablauf für einen Cloud Storage-Stagingbereich:
Ein externer Stagingbereich (d. h. Cloud Storage) verweist in seiner Definition auf ein Speicherintegrationsobjekt.
Snowflake ordnet die Speicherintegration automatisch einem für Ihr Konto erstellten Cloud Storage-Dienstkonto zu. Snowflake erstellt ein einzelnes Dienstkonto, auf das von allen GCS-Speicherintegrationen in Ihrem Snowflake-Konto verwiesen wird.
Ein Projekteditor für Ihr Cloud Storage-Projekt gewährt dem Dienstkonto Berechtigungen für den Zugriff auf den in der Stagingbereichsdefinition angegebenen Bucket. Beachten Sie, dass viele externe Stagingobjekte auf unterschiedliche Buckets und Pfade verweisen und dieselbe Integration zur Authentifizierung verwenden können.
Wenn ein Benutzer Daten aus einem Stagingbereich lädt oder in einen Stagingbereich entlädt, überprüft Snowflake die Berechtigungen, die dem Dienstkonto für den Bucket erteilt wurden, bevor Zugriff gewährt oder verweigert wird.
Unter diesem Thema:
Schritt 1: Cloud Storage-Integration in Snowflake erstellen¶
Erstellen Sie mit dem Befehl CREATE STORAGE INTEGRATION eine Integration. Eine Integration ist ein Snowflake-Objekt, das die Authentifizierungsverantwortung für externen Cloudspeicher an eine von Snowflake generierte Entität (d. h. ein Cloud Storage-Dienstkonto) delegiert. Für den Zugriff auf Cloud Storage-Buckets erstellt Snowflake ein Dienstkonto, dem Berechtigungen für den Zugriff auf die Buckets erteilt werden können, in denen sich Ihre Datendateien befinden.
Eine einzelne Speicherintegration kann mehrere externe (d. h. GCS) Speicherintegrationen unterstützen. Die URL in der Stagingbereichsdefinition muss mit den für den Parameter STORAGE_ALLOWED_LOCATIONS angegebenen GCS-Buckets (und optionalen Pfaden) übereinstimmen.
Bemerkung
Dieser SQL-Befehl kann nur von Kontoadministratoren (Benutzer mit der Rolle ACCOUNTADMIN) oder von Rollen mit der globalen Berechtigung CREATE INTEGRATION ausgeführt werden.
CREATE STORAGE INTEGRATION <integration_name>
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = 'GCS'
ENABLED = TRUE
STORAGE_ALLOWED_LOCATIONS = ('gcs://<bucket>/<path>/', 'gcs://<bucket>/<path>/')
[ STORAGE_BLOCKED_LOCATIONS = ('gcs://<bucket>/<path>/', 'gcs://<bucket>/<path>/') ]
Wobei:
integration_name
ist der Name der neuen Integration.bucket
ist der Name eines Cloud Storage-Buckets, in dem Ihre Datendateien gespeichert sind (z. B.mybucket
). Die erforderlichen Parameter STORAGE_ALLOWED_LOCATIONS und STORAGE_BLOCKED_LOCATIONS beschränken bzw. blockieren den Zugriff auf diese Buckets, wenn Stagingbereiche, die auf diese Integration verweisen, erstellt oder geändert werden.path
ist ein optionaler Pfad, mit dem Sie Objekte im Bucket genauer steuern können.
Im folgenden Beispiel wird eine Integration erstellt, die externe Stagingbereiche, die die Integration nutzen, explizit darauf beschränkt, auf einen von zwei Buckets und Pfaden zu verweisen: In einem späteren Schritt werden wir einen externen Stagingbereich erstellen, der auf einen dieser Buckets und Pfade verweist.
Zusätzliche externe Stagingbereiche, die diese Integration ebenfalls verwenden, können auf die zulässigen Buckets und Pfade verweisen:
CREATE STORAGE INTEGRATION gcs_int TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'GCS' ENABLED = TRUE STORAGE_ALLOWED_LOCATIONS = ('gcs://mybucket1/path1/', 'gcs://mybucket2/path2/') STORAGE_BLOCKED_LOCATIONS = ('gcs://mybucket1/path1/sensitivedata/', 'gcs://mybucket2/path2/sensitivedata/');
Schritt 2: Cloud Storage-Dienstkonto für Ihr Snowflake-Konto abrufen¶
Führen Sie den Befehl DESCRIBE INTEGRATION aus, um die ID für das Cloud Storage-Dienstkonto abzurufen, das automatisch für Ihr Snowflake-Konto erstellt wurde:
DESC STORAGE INTEGRATION <integration_name>;
Wobei:
integration_name
ist der Name der Integration, die Sie in Schritt 1: Cloud Storage-Integration in Snowflake erstellen (unter diesem Thema) erstellt haben.
Beispiel:
DESC STORAGE INTEGRATION gcs_int; +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+ | property | property_type | property_value | property_default | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | gcs://mybucket1/path1/,gcs://mybucket2/path2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | gcs://mybucket1/path1/sensitivedata/,gcs://mybucket2/path2/sensitivedata/ | [] | | STORAGE_GCP_SERVICE_ACCOUNT | String | service-account-id@project1-123456.iam.gserviceaccount.com | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Die Eigenschaft STORAGE_GCP_SERVICE_ACCOUNT in der Ausgabe zeigt das Cloud Storage-Dienstkonto an, das für Ihr Snowflake-Konto erstellt wurde (z. B. service-account-id@project1-123456.iam.gserviceaccount.com
). Wir stellen ein einziges Cloud Storage-Dienstkonto für Ihr gesamtes Snowflake-Konto bereit. Alle Cloud Storage-Integrationen verwenden dieses Dienstkonto.
Schritt 3: Dienstkontoberechtigungen für den Zugriff auf Bucket-Objekte erteilen¶
Die folgende Schritt-für-Schritt-Anleitung beschreibt, wie Sie IAM-Zugriffsberechtigungen für Snowflake über Ihre Google Cloud Platform Console so konfigurieren, dass Sie einen Cloud Storage-Bucket zum Laden und Entladen von Daten verwenden können:
Kundenspezifische IAM-Rolle erstellen¶
Erstellen Sie eine kundenspezifische Rolle, die über die erforderlichen Berechtigungen verfügt, um auf den Bucket zuzugreifen und Objekte abzurufen.
Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.
Wählen Sie im Startseiten-Dashboard die Option IAM & admin » Roles.
Klicken Sie auf Create Role.
Geben Sie einen Namen und eine Beschreibung für die Rolle ein.
Klicken Sie auf Add Permissions.
Filtern Sie die Liste der Berechtigungen, und fügen Sie Folgendes aus der Liste hinzu:
Aktionen
Erforderliche Berechtigungen
Nur Laden von Daten
storage.buckets.get
storage.objects.get
storage.objects.list
Laden von Daten mit Bereinigungsoption, Ausführen des Befehls REMOVE im Stagingbereich
storage.buckets.get
storage.objects.delete
storage.objects.get
storage.objects.list
Laden und Entladen von Daten
storage.buckets.get
(zur Berechnung der Datentransferkosten)storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list
Nur Entladen von Daten
storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.list
Klicken Sie auf Create.
Zuweisen der kundenspezifischen Rolle zum Cloud Storage-Dienstkonto¶
Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.
Wählen Sie im Startseiten-Dashboard die Option Cloud Storage » Browser:
Wählen Sie einen Bucket aus, den Sie für den Zugriff konfigurieren möchten.
Klicken Sie oben rechts auf SHOW INFO PANEL. Der Informationsbereich für den Bucket wird erweitert.
Klicken Sie auf die Schaltfläche ADD PRINCIPAL.
Suchen Sie im Feld New principals nach dem Namen des Dienstkontos aus der DESCRIBE INTEGRATION-Ausgabe von Schritt 2: Cloud Storage-Dienstkonto für Ihr Snowflake-Konto abrufen (unter diesem Thema).
Wählen Sie in der Dropdown-Liste Select a role die Option Custom »
<Rolle>
aus, wobei<Rolle>
die kundenspezifische Cloud Storage-Rolle ist, die Sie in Erstellen einer kundenspezifischen IAM-Rolle (unter diesem Thema) erstellt haben.Klicken Sie auf die Schaltfläche Save. Der Name des Dienstkontos wird der Dropdown-Liste Storage Object Viewer im Informationsbereich hinzugefügt.
Erteilen von Berechtigungen für das Cloud Storage-Dienstkonto für kryptografische Schlüssel des Cloud Key Management Service¶
Bemerkung
Dieser Schritt ist nur dann erforderlich, wenn Ihr GCS-Bucket mit einem in Google Cloud Key Management Service (Cloud KMS) gespeicherten Schlüssel verschlüsselt ist.
Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.
Wählen Sie im Startseiten-Dashboard die Option Security » Cryptographic keys.
Wählen Sie den Schlüsselring aus, der Ihrem GCS-Bucket zugewiesen ist.
Klicken Sie oben rechts auf SHOW INFO PANEL. Der Informationsbereich für den Schlüsselring wird erweitert.
Klicken Sie auf die Schaltfläche ADD PRINCIPAL.
Suchen Sie im Feld New principals nach dem Namen des Dienstkontos aus der DESCRIBE INTEGRATION-Ausgabe von Schritt 2: Cloud Storage-Dienstkonto für Ihr Snowflake-Konto abrufen (unter diesem Thema).
Wählen Sie in der Dropdown-Liste Select a role die Rolle
Cloud KMS CrytoKey Encryptor/Decryptor
aus.Klicken Sie auf die Schaltfläche Save. Der Name des Dienstkontos wird der Dropdown-Liste Cloud KMS CrytoKey Encryptor/Decryptor im Informationsbereich hinzugefügt.
Konfigurieren von automatischem Snowpipe mit GCS Pub/Sub¶
Voraussetzungen¶
In den Anweisungen unter diesem Thema wird davon ausgegangen, dass die folgenden Elemente erstellt und konfiguriert wurden:
- GCP-Konto:
Pub/Sub-Thema, das Ereignismeldungen vom GCS-Bucket empfängt. Weitere Informationen dazu finden Sie unter Erstellen des Pub/Sub-Themas (unter diesem Thema).
Abonnement, das Ereignismeldungen vom Pub/Sub-Thema empfängt. Weitere Informationen dazu finden Sie unter Erstellen des Pub/Sub-Abonnements (unter diesem Thema).
Eine Anleitung dazu finden Sie unter Pub/Sub-Dokumentation.
- Snowflake:
Zieltabelle der Snowflake-Datenbank, in die Ihre Daten geladen werden.
Erstellen des Pub/Sub-Themas¶
Erstellen Sie ein Pub/Sub-Thema mit Cloud Shell oder Cloud SDK.
Führen Sie den folgenden Befehl aus, um das Thema zu erstellen und zu aktivieren, damit es im angegebenen GCS-Bucket auf Aktivitäten wartet:
$ gsutil notification create -t <topic> -f json gs://<bucket-name> -e OBJECT_FINALIZE -e OBJECT_DELETE
Wobei:
<Thema>
ist der Name für das Thema.<Bucket-Name>
ist der Name Ihres GCS-Buckets.
Wenn das Thema bereits vorhanden ist, wird es vom Befehl verwendet. Andernfalls wird ein neues Thema erstellt.
Weitere Informationen finden Sie unter Verwenden von Pub/Sub-Benachrichtigungen für Cloudspeicher in der Pub/Sub-Dokumentation.
Erstellen des Pub/Sub-Abonnements¶
Erstellen Sie ein Abonnement mit Pull-Bereitstellung für das Pub/Sub-Thema über die Cloud Console, das Befehlszeilentool gcloud
oder die Cloud Pub/Sub-API. Anweisungen finden Sie unter Verwalten von Themen und Abonnements in der Pub/Sub-Dokumentation.
Bemerkung
Von Snowflake werden nur Pub/Sub-Abonnements unterstützt, die die Standard-Pull-Bereitstellung verwenden. Push-Bereitstellung wird nicht unterstützt.
Abrufen der Pub/Sub-Abonnement-ID¶
Die Pub/Sub-Themenabonnement-ID wird in dieser Anleitung verwendet, um Snowflake den Zugriff auf Ereignismeldungen zu ermöglichen.
Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.
Wählen Sie im Startseiten-Dashboard die Option Big Data » Pub/Sub » Subscriptions aus.
Kopieren Sie die ID in die Spalte Subscription ID des Themenabonnements.
Schritt 1: Benachrichtigungsintegration in Snowflake erstellen¶
Erstellen Sie eine Benachrichtigungsintegration mit dem Befehl CREATE NOTIFICATION INTEGRATION. Die Benachrichtigungsintegration verweist auf Ihr Pub/Sub-Abonnement. Snowflake verknüpft die Benachrichtigungsintegration mit einem GCS-Dienstkonto, das für Ihr Konto erstellt wurde. Snowflake erstellt ein einziges Dienstkonto, auf das von allen GCS-Speicherintegrationen in Ihrem Snowflake-Konto verwiesen wird.
Bemerkung
Dieser SQL-Befehl kann nur von Kontoadministratoren (Benutzer mit der Rolle ACCOUNTADMIN) oder von Rollen mit der globalen Berechtigung CREATE INTEGRATION ausgeführt werden.
Das GCS-Dienstkonto für Benachrichtigungsintegrationen unterscheidet sich von dem Dienstkonto, das für Speicherintegrationen erstellt wird.
Eine einzelne Benachrichtigungsintegration unterstützt genau ein Google Cloud Pub/Sub-Abonnement. Wenn mehrere Benachrichtigungsintegrationen auf dasselbe Pub/Sub-Abonnement verweisen, kann dies zu fehlenden Daten in den Zieltabellen führen, da Ereignisbenachrichtigungen zwischen Benachrichtigungsintegrationen aufgeteilt werden.
CREATE NOTIFICATION INTEGRATION <integration_name>
TYPE = QUEUE
NOTIFICATION_PROVIDER = GCP_PUBSUB
ENABLED = true
GCP_PUBSUB_SUBSCRIPTION_NAME = '<subscription_id>';
Wobei:
integration_name
ist der Name der neuen Integration.subscription_id
ist der Abonnementname, den Sie sich unter Abrufen der Pub/Sub-Abonnement-ID notiert haben.
Beispiel:
CREATE NOTIFICATION INTEGRATION my_notification_int
TYPE = QUEUE
NOTIFICATION_PROVIDER = GCP_PUBSUB
ENABLED = true
GCP_PUBSUB_SUBSCRIPTION_NAME = 'projects/project-1234/subscriptions/sub2';
Schritt 2: Snowflake Zugriff auf das Pub/Sub-Abonnement gewähren¶
Führen Sie den Befehl DESCRIBE INTEGRATION aus, um die Snowflake-Dienstkonto-ID abzurufen:
DESC NOTIFICATION INTEGRATION <integration_name>;
Wobei:
integration_name
ist der Name der Integration, die Sie in Schritt 1: Benachrichtigungsintegration in Snowflake erstellen erstellt haben.
Beispiel:
DESC NOTIFICATION INTEGRATION my_notification_int;
Notieren Sie den Namen des Dienstkontos in der Spalte GCP_PUBSUB_SERVICE_ACCOUNT, die das folgende Format hat:
<service_account>@<project_id>.iam.gserviceaccount.com
Melden Sie sich bei der Google Cloud Platform Console als Projekteditor an.
Wählen Sie im Startseiten-Dashboard die Option Big Data » Pub/Sub » Subscriptions aus.
Wählen Sie das Abonnement aus, das für den Zugriff konfiguriert werden soll.
Klicken Sie oben rechts auf SHOW INFO PANEL. Der Informationsbereich für das Abonnement wird erweitert.
Klicken Sie auf die Schaltfläche ADD PRINCIPAL.
Suchen Sie im Feld New principals nach dem Dienstkontonamen, den Sie sich notiert haben.
Wählen Sie in der Dropdown-Liste Select a role die Option Pub/Sub Subscriber aus.
Klicken Sie auf die Schaltfläche Save. Der Name des Dienstkontos wird der Dropdown-Liste Pub/Sub Subscriber im Informationsbereich hinzugefügt.
Navigieren Sie zur Seite Dashboard in der Cloud Console, und wählen Sie in der Dropdown-Liste Ihr Projekt aus.
Klicken Sie auf die Schaltfläche ADD PEOPLE TO THIS PROJECT.
Fügen Sie den Namen des Dienstkontos hinzu, den Sie sich notiert haben.
Wählen Sie in der Dropdown-Liste Select a role die Option Monitoring Viewer aus.
Klicken Sie auf die Schaltfläche Save. Der Name des Dienstkontos wird der Rolle Monitoring Viewer hinzugefügt.
Schritt 3: Stagingbereich erstellen (falls erforderlich)¶
Erstellen Sie mit dem Befehl CREATE STAGE einen externen Stagingbereich, der auf Ihren GCS-Bucket verweist. Snowflake liest Ihre Staging-Datendateien in die Metadaten der externen Tabelle. Alternativ können Sie einen vorhandenen externen Stagingbereich verwenden.
Bemerkung
Informationen zum Konfigurieren des sicheren Zugriffs auf den Speicherort in der Cloud finden Sie unter Konfigurieren des sicheren Zugriffs auf Cloudspeicher (unter diesem Thema).
Um in der CREATE STAGE-Anweisung auf eine Speicherintegration zu verweisen, muss die Rolle über USAGE-Berechtigung für das Speicherintegrationsobjekt verfügen.
Im folgenden Beispiel wird im aktiven Schema der Benutzersitzung ein Stagingbereich mit dem Namen mystage
erstellt. Die Cloudspeicher-URL enthält den Pfad files
. Der Stagingbereich verweist auf eine Speicherintegration mit dem Namen my_storage_int
.
USE SCHEMA mydb.public; CREATE STAGE mystage URL='gcs://load/files/' STORAGE_INTEGRATION = my_storage_int;
Schritt 4: Externe Tabelle erstellen¶
Erstellen Sie mit dem Befehl CREATE EXTERNAL TABLE eine externe Tabelle.
Erstellen Sie beispielsweise eine externe Tabelle im Schema mydb.public
, die JSON-Daten aus Dateien liest, die im Stagingbereich mystage
mit dem Pfad path1/
bereitgestellt wurden.
Der INTEGRATION-Parameter verweist auf die Benachrichtigungsintegration my_notification_int
, die Sie in Schritt 1: Benachrichtigungsintegration in Snowflake erstellen erstellt haben. Der Integrationsname muss komplett in Großbuchstaben angegeben werden.
Beachten Sie, dass der Parameter AUTO_REFRESH
standardmäßig TRUE
lautet:
CREATE OR REPLACE EXTERNAL TABLE ext_table
INTEGRATION = 'MY_NOTIFICATION_INT'
WITH LOCATION = @mystage/path1/
FILE_FORMAT = (TYPE = JSON);
Der externe Stagingbereich mit automatischer Aktualisierung ist jetzt konfiguriert!
Wenn neue oder aktualisierte Datendateien zum GCS-Bucket hinzugefügt werden, weist die Ereignisbenachrichtigung Snowflake an, sie in die Metadaten der externen Tabelle zu scannen.
Schritt 5: Manuelles Aktualisieren der Metadaten der externen Tabelle¶
Aktualisieren Sie die Metadaten der externen Tabelle einmal manuell, indem Sie ALTER EXTERNAL TABLE mit dem Parameter REFRESH verwenden, z. B.:
ALTER EXTERNAL TABLE ext_table REFRESH; +---------------------------------------------+----------------+-------------------------------+ | file | status | description | |---------------------------------------------+----------------+-------------------------------| | files/path1/file1.json | REGISTERED_NEW | File registered successfully. | | files/path1/file2.json | REGISTERED_NEW | File registered successfully. | | files/path1/file3.json | REGISTERED_NEW | File registered successfully. | +---------------------------------------------+----------------+-------------------------------+
Mit diesem Schritt werden die Metadaten mit der Liste der Dateien im Stagingbereich und Pfad in der externen Tabellendefinition synchronisiert. Außerdem wird durch diesen Schritt sichergestellt, dass die externe Tabelle die Datendateien im angegebenen Stagingbereich und Pfad lesen kann und dass in der Definition der externen Tabelle keine Dateien übersehen wurden.
Wenn die Liste der Dateien in der Spalte file
nicht Ihren Erwartungen entspricht, überprüfen Sie die Pfade in der Definition der externen Tabelle und der Definition des externen Stagingbereichs. Jeder Pfad in der externen Tabellendefinition wird an jeden in der Stagingbereichsdefinition angegebenen Pfad angehängt. Weitere Informationen dazu finden Sie unter CREATE EXTERNAL TABLE.
Wichtig
Wenn dieser Schritt nach dem Erstellen der externen Tabelle nicht mindestens einmal erfolgreich abgeschlossen wurde, werden beim Abfragen der externen Tabelle keine Ergebnisse zurückgegeben, bis eine Pub/Sub-Benachrichtigung die Metadaten der externen Tabelle zum ersten Mal automatisch aktualisiert.
Dieser Schritt stellt sicher, dass die Metadaten mit allen Änderungen an der Dateiliste synchronisiert werden, die seit Schritt 4 vorgenommen wurden. Danach lösen Pub/Sub-Benachrichtigungen automatisch die Aktualisierung der Metadaten aus.
Schritt 6: Konfigurieren der Sicherheit¶
Erteilen Sie mit GRANT <Berechtigungen> für jede zusätzliche Rolle, die zum Abfragen der externen Tabelle verwendet wird, ausreichende Zugriffssteuerungsrechte für die verschiedenen Objekte (d. h. Datenbanken, Schemas, Stagingbereich und Tabelle):
Objekt |
Berechtigung |
Anmerkungen |
---|---|---|
Datenbank |
USAGE |
|
Schema |
USAGE |
|
Benannter Stagingbereich |
USAGE , READ |
|
Benanntes Dateiformat |
USAGE |
Optional; nur erforderlich, wenn der in Schritt 3: Stagingbereich erstellen (falls erforderlich) erstellte Stagingbereich auf ein benanntes Dateiformat verweist. |
Externe Tabelle |
SELECT |