Snowflake-Übertragung planen
Mit dem Snowflake-Connector, der vom BigQuery Data Transfer Service bereitgestellt wird, können Sie automatisierte Übertragungsjobs planen und verwalten, um Daten aus Snowflake in BigQuery zu migrieren. Dazu verwenden Sie Zulassungslisten für öffentliche IP-Adressen.
Übersicht
Der Snowflake-Connector aktiviert die Migrations-Agents in Google Kubernetes Engine und löst einen Ladevorgang von Snowflake zu einem Staging-Bereich beim selben Cloud-Anbieter aus, bei dem Snowflake gehostet wird.
- Bei AWS-gehosteten Snowflake-Konten werden die Daten zuerst in Ihrem Amazon S3-Bucket bereitgestellt und dann mit dem BigQuery Data Transfer Service zu BigQuery übertragen.
- BeiGoogle Cloud-gehosteten Snowflake-Konten werden die Daten zuerst in Ihrem Cloud Storage-Bucket bereitgestellt und dann mit dem BigQuery Data Transfer Service zu BigQuery übertragen.
- Bei in Azure gehosteten Snowflake-Konten werden die Daten zuerst in Ihrem Azure Blob Storage-Container bereitgestellt und dann mit dem BigQuery Data Transfer Service nach BigQuery übertragen.
Beschränkungen
Für Datenübertragungen mit dem Snowflake-Connector gelten die folgenden Einschränkungen:
- Der Snowflake-Connector unterstützt nur Übertragungen von Tabellen innerhalb einer einzelnen Snowflake-Datenbank und eines einzelnen Snowflake-Schemas. Wenn Sie Daten aus Tabellen mit mehreren Snowflake-Datenbanken oder ‑Schemas übertragen möchten, können Sie jeden Übertragungsjob separat einrichten.
- Die Geschwindigkeit beim Laden von Daten aus Snowflake in Ihren Amazon S3-Bucket, Azure Blob Storage-Container oder Cloud Storage-Bucket wird durch das Snowflake-Warehouse begrenzt, das Sie für diese Übertragung ausgewählt haben.
- BigQuery schreibt Daten aus Snowflake als Parquet-Dateien in Cloud Storage. Die Datentypen
TIMESTAMP_TZundTIMESTAMP_LTZwerden in Parquet-Dateien nicht unterstützt. Wenn Ihre Daten diese Typen enthalten, können Sie sie als CSV-Dateien in Amazon S3 exportieren und die CSV-Dateien dann in BigQuery importieren. Weitere Informationen finden Sie unter Übersicht über Amazon S3-Übertragungen.
Hinweis
Bevor Sie einen Snowflake-Transfer einrichten, müssen Sie alle in diesem Abschnitt aufgeführten Schritte ausführen. Im Folgenden finden Sie eine Liste aller erforderlichen Schritte.
- Projekt in Google Cloud vorbereiten
- Erforderliche BigQuery-Rollen
- Staging-Bucket vorbereiten
- Snowflake-Nutzer mit den erforderlichen Berechtigungen erstellen
- Netzwerkrichtlinien hinzufügen
- Optional: Schemaerkennung und ‑zuordnung
- Snowflake auf nicht unterstützte Datentypen prüfen
- Optional: Inkrementelle Übertragungen aktivieren
- Optional: Private Verbindung aktivieren
- Übertragungsinformationen erfassen
- Wenn Sie einen vom Kunden verwalteten Verschlüsselungsschlüssel (CMEK) angeben möchten, muss Ihr Dienstkonto über die Berechtigungen zum Verschlüsseln und Entschlüsseln verfügen und Sie müssen die für die Verwendung von CMEK erforderliche Cloud KMS-Schlüsselressourcen-ID haben. Informationen zur Funktionsweise von CMEK mit Übertragungen finden Sie unter Verschlüsselungsschlüssel mit Übertragungen angeben.
Google Cloud -Projekt vorbereiten
So erstellen und konfigurieren Sie Ihr Google Cloud Projekt für eine Snowflake-Übertragung:
Erstellen Sie ein Google Cloud Projekt oder wählen Sie ein vorhandenes Projekt aus.
Überprüfen Sie, ob Sie alle erforderlichen Aktionen ausgeführt haben, damit Sie den BigQuery Data Transfer Service aktivieren können.
Erstellen Sie ein BigQuery-Dataset zum Speichern Ihrer Daten. Sie müssen keine Tabellen erstellen.
Erforderliche BigQuery-Rollen
Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Administrator (roles/bigquery.admin) für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer BigQuery Data Transfer Service-Datenübertragung benötigen.
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.
Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen einer BigQuery Data Transfer Service-Datenübertragung erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
Die folgenden Berechtigungen sind erforderlich, um eine Datenübertragung für den BigQuery Data Transfer Service zu erstellen:
-
Berechtigungen für BigQuery Data Transfer Service:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
BigQuery-Berechtigungen:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.
Weitere Informationen finden Sie unter Zugriff auf bigquery.admin gewähren.
Staging-Bucket vorbereiten
Um eine Snowflake-Datenübertragung abzuschließen, müssen Sie einen Staging-Bucket erstellen und ihn so konfigurieren, dass Snowflake Schreibzugriff hat.
Wählen Sie eine der folgenden Optionen aus:
AWS
Staging-Bucket für das in AWS gehostete Snowflake-Konto
Erstellen Sie für ein in AWS gehostetes Snowflake-Konto einen Amazon S3-Bucket, um die Snowflake-Daten zu stagen, bevor sie in BigQuery geladen werden.
Erstellen und konfigurieren Sie ein Snowflake-Speicherintegrationsobjekt, damit Snowflake Daten als externe Phase in den Amazon S3-Bucket schreiben kann.
Damit Lesezugriff auf Ihren Amazon S3-Bucket möglich ist, müssen Sie außerdem Folgendes tun:
Erstellen Sie einen dedizierten Amazon IAM-Nutzer und gewähren Sie ihm die Richtlinie AmazonS3ReadOnlyAccess.
Erstellen Sie ein Amazon-Zugriffsschlüsselpaar für den IAM-Nutzer.
Azure
Staging-Azure Blob Storage-Container für in Azure gehostetes Snowflake-Konto
Erstellen Sie für in Azure gehostete Snowflake-Konten einen Azure Blob Storage-Container, um die Snowflake-Daten vor dem Laden in BigQuery bereitzustellen.
- Erstellen Sie ein Azure-Speicherkonto und darin einen Speichercontainer.
- Erstellen und konfigurieren Sie ein Snowflake-Speicherintegrationsobjekt, damit Snowflake Daten als externe Phase in den Azure Storage-Container schreiben kann. Schritt 3 („Externe Staging-Umgebung erstellen“) kann übersprungen werden, da wir sie nicht verwenden.
Wenn Sie Lesezugriff auf Ihren Azure-Container gewähren möchten, generieren Sie ein SAS-Token dafür.
Google Cloud
Staging-Bucket für das von Google Cloudgehostete Snowflake-Konto
Erstellen Sie für Google Cloud-gehostete Snowflake-Konten einen Cloud Storage-Bucket, um die Snowflake-Daten bereitzustellen, bevor sie in BigQuery geladen werden.
- Cloud Storage-Bucket erstellen
- Erstellen und konfigurieren Sie ein Snowflake-Speicherintegrationsobjekt, damit Snowflake Daten als externe Phase in den Cloud Storage-Bucket schreiben kann.
Um Zugriff auf den Staging-Bucket zu gewähren, weisen Sie dem DTS-Dienst-Agent mit dem folgenden Befehl die Rolle
roles/storage.objectViewerzu:gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \ --role=roles/storage.objectViewer
Snowflake-Nutzer mit den erforderlichen Berechtigungen erstellen
Bei einer Snowflake-Übertragung wird über den Snowflake-Connector eine JDBC-Verbindung zu Ihrem Snowflake-Konto hergestellt. Sie müssen einen neuen Snowflake-Nutzer mit einer benutzerdefinierten Rolle erstellen, die nur die erforderlichen Berechtigungen für die Datenübertragung hat:
// Create and configure new role, MIGRATION_ROLE
GRANT USAGE
ON WAREHOUSE WAREHOUSE_NAME
TO ROLE MIGRATION_ROLE;
GRANT USAGE
ON DATABASE DATABASE_NAME
TO ROLE MIGRATION_ROLE;
GRANT USAGE
ON SCHEMA DATABASE_NAME.SCHEMA_NAME
TO ROLE MIGRATION_ROLE;
// You can modify this to give select permissions for all tables in a schema
GRANT SELECT
ON TABLE DATABASE_NAME.SCHEMA_NAME.TABLE_NAME
TO ROLE MIGRATION_ROLE;
GRANT USAGE
ON STORAGE_INTEGRATION_OBJECT_NAME
TO ROLE MIGRATION_ROLE;
Ersetzen Sie Folgendes:
MIGRATION_ROLE: der Name der benutzerdefinierten Rolle, die Sie erstellenWAREHOUSE_NAME: der Name Ihres Data WarehouseDATABASE_NAME: der Name Ihrer Snowflake-DatenbankSCHEMA_NAME: der Name Ihres Snowflake-SchemasTABLE_NAME: der Name der Snowflake-Instanz, die in dieser Datenübertragung enthalten istSTORAGE_INTEGRATION_OBJECT_NAME: Der Name Ihres Snowflake-Speicherintegrationsobjekts.
Schlüsselpaar für die Authentifizierung generieren
Da Snowflake die Anmeldung mit einem Einzelfaktor-Passwort nicht mehr unterstützt, empfehlen wir, für die Authentifizierung ein Schlüsselpaar zu verwenden.
Sie können ein Schlüsselpaar konfigurieren, indem Sie ein verschlüsseltes oder unverschlüsseltes RSA-Schlüsselpaar generieren und dann den öffentlichen Schlüssel einem Snowflake-Nutzer zuweisen. Weitere Informationen finden Sie unter Schlüsselpaar-Authentifizierung konfigurieren.
Netzwerkrichtlinien hinzufügen
Für öffentliche Verbindungen ist im Snowflake-Konto standardmäßig eine öffentliche Verbindung mit Datenbankanmeldedaten zulässig. Möglicherweise haben Sie jedoch Netzwerkregeln oder ‑richtlinien konfiguriert, die verhindern, dass der Snowflake-Connector eine Verbindung zu Ihrem Konto herstellt. In diesem Fall müssen Sie die erforderlichen IP-Adressen Ihrer Zulassungsliste hinzufügen. Weitere Informationen finden Sie unter Netzwerkrichtlinien für Snowflake-Übertragungen konfigurieren.
Schemaerkennung und ‑zuordnung
Wenn Sie Ihr Schema definieren möchten, können Sie den BigQuery Data Transfer Service verwenden, um Schema und Datentypzuordnung automatisch zu erkennen, wenn Sie Daten von Snowflake zu BigQuery übertragen. Alternativ können Sie die Übersetzungs-Engine verwenden, um Ihr Schema und Ihre Datentypen manuell zu definieren.
Weitere Informationen finden Sie unter Schemaerkennung und ‑zuordnung.
Inkrementelle Übertragungen aktivieren
Informationen zum Einrichten einer inkrementellen Snowflake-Datenübertragung finden Sie unter Inkrementelle Übertragungen für Snowflake einrichten.
Private Verbindung aktivieren
Wenn Sie einen privaten Snowflake-Datenübertrag erstellen möchten, müssen Sie Ihr Netzwerk für private Verbindungen konfigurieren.
Übertragungsinformationen erfassen
Erfassen Sie die Informationen, die Sie zum Einrichten der Migration mit BigQuery Data Transfer Service benötigen:
- Ihre Snowflake-Konto-ID, das Präfix in Ihrer Snowflake-Konto-URL. Beispiel:
ACCOUNT_IDENTIFIER.snowflakecomputing.com. - Der Nutzername und der zugehörige private Schlüssel mit den entsprechenden Berechtigungen für Ihre Snowflake-Datenbank. Es kann nur die erforderlichen Berechtigungen zum Ausführen der Datenübertragung haben.
- Der URI des Staging-Buckets, den Sie für die Übertragung verwenden möchten:
- Für ein in AWS gehostetes Snowflake-Konto ist ein Amazon S3-Bucket-URI zusammen mit Anmeldedaten erforderlich.
- Für eine in Azure gehostete Snowflake-Instanz ist ein Azure Blob Storage-Konto und -Container erforderlich.
- Für einGoogle Cloud-gehostetes Snowflake-Konto ist ein Cloud Storage-Bucket-URI erforderlich. Wir empfehlen, für diesen Bucket eine Lebenszyklusrichtlinie einzurichten, um unnötige Gebühren zu vermeiden.
- Der URI des Cloud Storage-Bucket, in dem Sie die von der Übersetzungs-Engine abgerufenen Schemazuordnungsdateien gespeichert haben.
Snowflake-Übertragung einrichten
Wählen Sie eine der folgenden Optionen aus:
Console
Rufen Sie in der Google Cloud -Console die Seite „Datenübertragungen“ auf.
Klicken Sie auf Übertragung erstellen.
Wählen Sie im Abschnitt Quelltyp die Option Snowflake-Migration aus der Liste Quelle aus.
Geben Sie im Abschnitt Transfer config name (Konfigurationsname für Übertragung) im Feld Display name (Anzeigename) einen Namen für die Übertragung ein, z. B.
My migration. Der Anzeigename kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.Wählen Sie im Abschnitt Destination settings (Zieleinstellungen) das von Ihnen erstellte Dataset aus der Liste Dataset aus.
Führen Sie im Bereich Snowflake-Anmeldedaten folgende Schritte aus:
- Geben Sie für Konto-ID eine eindeutige ID für Ihr Snowflake-Konto ein. Diese besteht aus einer Kombination aus Ihrem Organisationsnamen und Ihrem Kontonamen. Die ID ist das Präfix der Snowflake-Konto-URL und nicht die vollständige URL. Beispiel:
ACCOUNT_IDENTIFIER.snowflakecomputing.com. - Geben Sie unter Nutzername den Nutzernamen des Snowflake-Nutzers ein, dessen Anmeldedaten und Autorisierung für den Zugriff auf Ihre Datenbank verwendet werden, um die Snowflake-Tabellen zu übertragen. Wir empfehlen, den Nutzer zu verwenden, den Sie für diese Übertragung erstellt haben.
- Wählen Sie unter Authentication Mechanism (Authentifizierungsmechanismus) eine Snowflake-Nutzerauthentifizierungsmethode aus:
PASSWORT
- Geben Sie unter Passwort das Passwort des Snowflake-Nutzers ein.
KEY_PAIR
- Geben Sie für Private Key den privaten Schlüssel ein, der mit dem öffentlichen Schlüssel verknüpft ist, der dem Snowflake-Nutzer zugeordnet ist.
- Wählen Sie für Is Private Key Encrypted (Ist der private Schlüssel verschlüsselt?) dieses Feld aus, wenn der private Schlüssel mit einer Passphrase verschlüsselt ist.
- Geben Sie unter Passphrase für den privaten Schlüssel die Passphrase für den verschlüsselten privaten Schlüssel ein. Dieses Feld ist erforderlich, wenn Sie Is Private Key Encrypted (Ist der private Schlüssel verschlüsselt?) ausgewählt haben. Weitere Informationen finden Sie unter Schlüsselpaar für die Authentifizierung generieren.
- Geben Sie unter Warehouse ein Warehouse ein, das für die Ausführung dieses Datentransfers verwendet wird.
- Geben Sie unter Snowflake-Datenbank den Namen der Snowflake-Datenbank ein, die die in dieser Datenübertragung enthaltenen Tabellen enthält.
- Geben Sie unter Snowflake-Schema den Namen des Snowflake-Schemas ein, das die in dieser Datenübertragung enthaltenen Tabellen enthält.
- Geben Sie für Konto-ID eine eindeutige ID für Ihr Snowflake-Konto ein. Diese besteht aus einer Kombination aus Ihrem Organisationsnamen und Ihrem Kontonamen. Die ID ist das Präfix der Snowflake-Konto-URL und nicht die vollständige URL. Beispiel:
Führen Sie im Abschnitt Speicherkonfiguration die folgenden Schritte aus:
- Geben Sie unter Name des Speicherintegrationsobjekts den Namen des Snowflake-Speicherintegrationsobjekts ein.
- Optional: Geben Sie für Max file size (Maximale Dateigröße) die maximale Größe jeder Datei an, die aus Snowflake an den Staging-Speicherort entladen wird (in MB).
Wählen Sie für Cloud Provider (Cloud-Anbieter) je nachdem, welcher Cloud-Anbieter Ihr Snowflake-Konto hostet,
AWS,AZUREoderGCPaus.AWS
- Geben Sie im Feld Amazon S3 URI (Amazon S3-URI) den URI des Amazon S3-Buckets ein, der als Staging-Bereich verwendet werden soll.
- Geben Sie bei Access key ID (Zugriffsschlüssel-ID) und Secret access key (Geheimer Zugriffsschlüssel) das Zugriffsschlüsselpaar ein.
Azure
- Geben Sie unter Storage-Kontoname und Der Container im Azure-Speicherkonto den Namen des Speicherkontos und des Containers des Azure Blob Storage ein, der als Stagingbereich verwendet werden soll.
- Geben Sie unter SAS-Token das für den Container generierte SAS-Token ein.
Google Cloud
- Geben Sie als GCS-URI den URI des Cloud Storage ein, der als Staging-Bereich verwendet werden soll.
Führen Sie im Abschnitt Dienstkonto folgende Schritte aus:
- Geben Sie unter Dienstkonto ein Dienstkonto ein, das für diese Datenübertragung verwendet werden soll. Das Dienstkonto sollte zum selbenGoogle Cloud -Projekt gehören, in dem die Übertragungskonfiguration und das Ziel-Dataset erstellt werden. Das Dienstkonto muss die erforderlichen Berechtigungen
storage.objects.listundstorage.objects.gethaben.
- Geben Sie unter Dienstkonto ein Dienstkonto ein, das für diese Datenübertragung verwendet werden soll. Das Dienstkonto sollte zum selbenGoogle Cloud -Projekt gehören, in dem die Übertragungskonfiguration und das Ziel-Dataset erstellt werden. Das Dienstkonto muss die erforderlichen Berechtigungen
Führen Sie im Abschnitt Schemakonfiguration die folgenden Schritte aus:
- Wählen Sie für Aufnahmetyp die Option Vollständig oder Inkrementell aus. Weitere Informationen finden Sie unter Verhalten bei der Datenerfassung.
- Geben Sie bei Table name patterns (Tabellennamensmuster) eine zu übertragende Tabelle an, indem Sie einen Namen oder ein Muster eingeben, das mit dem Tabellennamen im Schema übereinstimmt. Sie können das Muster mit regulären Ausdrücken angeben, z. B.
table1_regex;table2_regex. Das Muster sollte der Java-Syntax für reguläre Ausdrücke folgen. Beispiel:lineitem;ordertbführt zu Übereinstimmungen mit Tabellen, dielineitemundordertbheißen..*führt zu Übereinstimmung mit allen Tabellen.
- Optional: Wählen Sie für BigQuery Translation Engine-Ausgabe verwenden dieses Feld aus, wenn Sie einen benutzerdefinierten Ausgabepfad für die Übersetzung angeben möchten.
- Optional: Geben Sie für GCS-Pfad für Übersetzungsausgabe einen Pfad zum Cloud Storage-Ordner an, der die Dateien für die Schemazuordnung der Übersetzungs-Engine enthält. Sie können dieses Feld leer lassen, damit das Schema automatisch vom Snowflake-Connector erkannt wird.
- Der Pfad muss dem Format
translation_target_base_uri/metadata/config/db/schema/entsprechen und mit/enden.
- Der Pfad muss dem Format
- Optional: Geben Sie unter Pfad zur benutzerdefinierten Schemadatei den Cloud Storage-Pfad zu einer benutzerdefinierten Schemadatei an.
- Optional: Wählen Sie für Snowflake-NUMBER mit Skalierung 0 BigQuery-INT64 zuordnen dieses Feld aus, wenn Sie möchten, dass Snowflake-
NUMBER(p, 0)-Typen BigQuery-INT64zugeordnet werden.
Führen Sie im Abschnitt Netzwerkverbindung die folgenden Schritte aus:
- Wählen Sie für Use Private Network (Privates Netzwerk verwenden) True aus, wenn Sie eine private Datenübertragung erstellen.
- Geben Sie für PSC-Dienstanhang den URI des Dienstanhangs ein, wenn Sie eine private Verbindung erstellen. Weitere Informationen finden Sie unter Private Snowflake-Übertragungskonfiguration erstellen.
- Geben Sie für Private Network Service (Privater Netzwerkdienst) den Self-Link des Service Directory ein, wenn Sie eine private Datenübertragung erstellen. Weitere Informationen finden Sie unter Private Snowflake-Übertragungskonfiguration erstellen.
Optional: Gehen Sie im Abschnitt Benachrichtigungsoptionen so vor:
- Klicken Sie auf den Umschalter, um E-Mail-Benachrichtigungen zu aktivieren. Wenn Sie diese Option aktivieren, erhält der Übertragungsadministrator eine E-Mail-Benachrichtigung, wenn ein Übertragungsvorgang fehlschlägt.
- Wählen Sie unter Pub/Sub-Thema auswählen Ihr Thema aus oder klicken Sie auf Thema erstellen. Mit dieser Option werden Pub/Sub-Ausführungsbenachrichtigungen für Ihre Übertragung konfiguriert.
Wenn Sie CMEKs verwenden, wählen Sie im Abschnitt Erweiterte Optionen die Option Vom Kunden verwalteter Schlüssel aus. Es wird eine Liste der verfügbaren CMEKs angezeigt, aus denen Sie wählen können. Informationen zur Funktionsweise von CMEKs mit dem BigQuery Data Transfer Service finden Sie unter Verschlüsselungsschlüssel mit Übertragungen angeben.
Klicken Sie auf Speichern.
In der Google Cloud Console werden alle Details zur Übertragungseinrichtung angezeigt, darunter ein Ressourcenname für diese Übertragung.
bq
Geben Sie den Befehl bq mk ein und geben Sie das Flag --transfer_config für die Übertragungserstellung an. Folgende Flags sind ebenfalls erforderlich:
--project_id--data_source--target_dataset--display_name--params
bq mk \ --transfer_config \ --project_id=project_id \ --data_source=data_source \ --target_dataset=dataset \ --display_name=name \ --service_account_name=service_account \ --params='parameters'
Ersetzen Sie Folgendes:
- project_id: Projekt-ID in Google Cloud . Wenn
--project_idnicht angegeben ist, wird das Standardprojekt verwendet. - data_source: die Datenquelle,
snowflake_migration. - dataset ist das BigQuery-Ziel-Dataset für die Übertragungskonfiguration.
- name: Der Anzeigename für die Übertragungskonfiguration. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.
- service_account: (Optional) der Name des Dienstkontos, der zur Authentifizierung der Übertragung verwendet wird. Das Dienstkonto sollte zum selben
project_idgehören, das für die Erstellung der Übertragung verwendet wurde, und sollte alle erforderlichen Rollen haben. - parameters: die Parameter für die erstellte Übertragungskonfiguration im JSON-Format. Beispiel:
--params='{"param":"param_value"}'.
Sie können die folgenden Parameter für Ihre Snowflake-Übertragungskonfiguration konfigurieren:
account_identifier: Geben Sie eine eindeutige Kennung für Ihr Snowflake-Konto an, die eine Kombination aus Ihrem Organisationsnamen und Kontonamen ist. Die ID ist das Präfix der Snowflake-Konto-URL und nicht die vollständige URL. Beispiel:account_identifier.snowflakecomputing.com.username: Geben Sie den Nutzernamen des Snowflake-Nutzers an, dessen Anmeldedaten und Autorisierung für den Zugriff auf Ihre Datenbank zum Übertragen der Snowflake-Tabellen verwendet werden.auth_mechanism: Gibt die Authentifizierungsmethode für Snowflake-Nutzer an. Unterstützte Werte sindPASSWORDundKEY_PAIR. Weitere Informationen finden Sie unter Schlüsselpaar für die Authentifizierung generieren.password: Geben Sie das Passwort des Snowflake-Nutzers an. Dieses Feld ist erforderlich, wenn SiePASSWORDim Feldauth_mechanismangegeben haben.private_key: Geben Sie den privaten Schlüssel an, der mit dem öffentlichen Schlüssel verknüpft ist, der dem Snowflake-Nutzer zugeordnet ist. Dieses Feld ist erforderlich, wenn SieKEY_PAIRim Feldauth_mechanismangegeben haben.is_private_key_encrypted: Geben Sietruean, wenn der private Schlüssel mit einer Passphrase verschlüsselt ist.private_key_passphrase: Geben Sie die Passphrase für den verschlüsselten privaten Schlüssel an. Dieses Feld ist erforderlich, wenn SieKEY_PAIRim Feldauth_mechanismundtrueim Feldis_private_key_encryptedangegeben haben.warehouse: Geben Sie ein Warehouse an, das für die Ausführung dieser Datenübertragung verwendet wird.service_account: Geben Sie ein Dienstkonto an, das für diese Datenübertragung verwendet werden soll. Das Dienstkonto sollte zum selben Google Cloud Projekt gehören, in dem die Übertragungskonfiguration und das Ziel-Dataset erstellt werden. Das Dienstkonto muss die erforderlichen Berechtigungenstorage.objects.listundstorage.objects.gethaben.database: Geben Sie den Namen der Snowflake-Datenbank an, die die in dieser Datenübertragung enthaltenen Tabellen enthält.schema: Geben Sie den Namen des Snowflake-Schemas an, das die in dieser Datenübertragung enthaltenen Tabellen enthält.table_name_patterns: Geben Sie eine zu übertragende Tabelle an, indem Sie einen Namen oder ein Muster eingeben, das mit dem Tabellennamen im Schema übereinstimmt. Sie können das Muster mit regulären Ausdrücken angeben, z. B.table1_regex;table2_regex. Das Muster sollte der Java-Syntax für reguläre Ausdrücke folgen. Beispiel:lineitem;ordertbführt zu Übereinstimmungen mit Tabellen, dielineitemundordertbheißen..*führt zu Übereinstimmung mit allen Tabellen.Sie können dieses Feld auch leer lassen, um alle Tabellen aus dem angegebenen Schema zu migrieren.
ingestion_mode: Gibt den Aufnahmemodus für die Übertragung an. Unterstützte Werte sindFULLundINCREMENTAL. Weitere Informationen finden Sie unter Verhalten bei der Datenaufnahme.translation_output_gcs_path: (Optional) Geben Sie einen Pfad zum Cloud Storage-Ordner an, der die Schemazuordnungsdateien der Übersetzungs-Engine enthält. Sie können dieses Feld leer lassen, damit das Schema automatisch vom Snowflake-Connector erkannt wird.- Der Pfad muss dem Format
gs://translation_target_base_uri/metadata/config/db/schema/entsprechen und mit/enden.
- Der Pfad muss dem Format
storage_integration_object_name: Geben Sie den Namen des Snowflake-Speicherintegrationsobjekts an.cloud_provider: Geben SieAWS,AZUREoderGCPein, je nachdem, welcher Cloud-Anbieter Ihr Snowflake-Konto hostet.staging_s3_uri: Geben Sie den URI des S3-Buckets ein, der als Staging-Bereich verwendet werden soll. Nur erforderlich, wenn Ihrcloud_providerAWSist.aws_access_key_id: Geben Sie das Zugriffsschlüsselpaar ein. Nur erforderlich, wenn Ihrcloud_providerAWSist.aws_secret_access_key: Geben Sie das Zugriffsschlüsselpaar ein. Nur erforderlich, wenn Ihrcloud_providerAWSist.azure_storage_account: Geben Sie den Namen des Speicherkontos ein, das als Stagingbereich verwendet werden soll. Nur erforderlich, wenn Ihrcloud_providerAZUREist.staging_azure_container: Geben Sie den Container in Azure Blob Storage ein, der als Stagingbereich verwendet werden soll. Nur erforderlich, wenn Ihrcloud_providerAZUREist.azure_sas_token: Geben Sie das SAS-Token ein. Nur erforderlich, wenn Ihrcloud_providerAZUREist.staging_gcs_uri: Geben Sie den URI des Cloud Storage ein, der als Stagingbereich verwendet werden soll. Nur erforderlich, wenn Ihrcloud_providerGCPist.use_private_network: Wenn Sie eine Übertragung privater Daten erstellen, legen Sie den Wert aufTRUEfest.service_attachment: Wenn Sie eine private Datenübertragung erstellen, geben Sie den URI des Dienstanhangs an. Weitere Informationen finden Sie unter Private Snowflake-Übertragungskonfiguration erstellen.private_network_service: Wenn Sie eine private Datenübertragung erstellen, geben Sie den Self-Link des NLB-Dienstes an. Weitere Informationen finden Sie unter Private Snowflake-Übertragungskonfiguration erstellen.
Mit dem folgenden Befehl wird beispielsweise für ein AWS-gehostetes Snowflake-Konto eine Snowflake-Übertragung mit dem Namen Snowflake transfer config, einem Ziel-Dataset namens your_bq_dataset und einem Projekt mit der ID your_project_id erstellt.
PARAMS='{ "account_identifier": "your_account_identifier", "auth_mechanism": "KEY_PAIR", "aws_access_key_id": "your_access_key_id", "aws_secret_access_key": "your_aws_secret_access_key", "cloud_provider": "AWS", "database": "your_sf_database", "ingestion_mode": "INCREMENTAL", "private_key": "-----BEGIN PRIVATE KEY----- privatekey\nseparatedwith\nnewlinecharacters=-----END PRIVATE KEY-----", "schema": "your_snowflake_schema", "service_account": "your_service_account", "storage_integration_object_name": "your_storage_integration_object", "staging_s3_uri": "s3://your/s3/bucket/uri", "table_name_patterns": ".*", "translation_output_gcs_path": "gs://sf_test_translation/output/metadata/config/database_name/schema_name/", "username": "your_sf_username", "warehouse": "your_warehouse" }' bq mk --transfer_config \ --project_id=your_project_id \ --target_dataset=your_bq_dataset \ --display_name='snowflake transfer config' \ --params="$PARAMS" \ --data_source=snowflake_migration
API
Verwenden Sie die Methode projects.locations.transferConfigs.create und geben Sie eine Instanz der Ressource TransferConfig an.
Verschlüsselungsschlüssel mit Übertragungen angeben
Sie können kundenverwaltete Verschlüsselungsschlüssel (CMEKs) angeben, um Daten für eine Übertragungsausführung zu verschlüsseln. Sie können einen CMEK verwenden, um Übertragungen von Snowflake zu unterstützen.Wenn Sie einen CMEK mit einer Übertragung angeben, wendet der BigQuery Data Transfer Service den CMEK auf einen zwischengeschalteten Festplatten-Cache von aufgenommenen Daten an, sodass der gesamte Datenübertragungsworkflow CMEK-konform ist.
Sie können eine vorhandene Übertragung nicht aktualisieren, um einen CMEK hinzuzufügen, wenn die Übertragung nicht ursprünglich mit einem CMEK erstellt wurde. Sie können beispielsweise keine Zieltabelle ändern, die ursprünglich standardmäßig verschlüsselt wurde, um jetzt mit CMEK zu verschlüsseln. Umgekehrt können Sie eine CMEK-verschlüsselte Zieltabelle auch nicht auf einen anderen Verschlüsselungstyp ändern.
Sie können einen CMEK für eine Übertragung aktualisieren, wenn die Übertragungskonfiguration ursprünglich mit einer CMEK-Verschlüsselung erstellt wurde. Wenn Sie einen CMEK für eine Übertragungskonfiguration aktualisieren, leitet der BigQuery Data Transfer Service den CMEK bei der nächsten Ausführung der Übertragung an die Zieltabellen weiter, wobei der BigQuery Data Transfer Service während der Übertragungsausführung alle veralteten CMEKs durch den neuen CMEK ersetzt. Weitere Informationen finden Sie unter Übertragung aktualisieren.
Sie können auch Standardschlüssel für Projekte verwenden. Wenn Sie einen Projektstandardschlüssel für eine Übertragung angeben, verwendet der BigQuery Data Transfer Service den Standardschlüssel des Projekts als Standardschlüssel für neue Übertragungskonfigurationen.
Kontingente und Limits
BigQuery hat standardmäßig ein Ladekontingent von 15 TB pro Ladejob und für jede Tabelle. Snowflake komprimiert die Tabellendaten intern. Daher ist die exportierte Tabellengröße größer als die von Snowflake gemeldete Tabellengröße. Wenn Sie Tabellen mit mehr als 15 TB laden möchten, wenden Sie sich an dts-migration-preview-support@google.com.
Um die Ladezeiten für größere Tabellen zu verkürzen, geben Sie für die Reservierungszuweisung den Jobtyp PIPELINE an.
Aufgrund des Konsistenzmodells von Amazon S3 kann es sein, dass einige Dateien nicht in die Übertragung nach BigQuery einbezogen werden.
Preise
Die Preise für BigQuery Data Transfer Service finden Sie auf der Seite Preise.
- Wenn sich das Snowflake-Warehouse und der Amazon S3-Bucket in verschiedenen Regionen befinden, berechnet Snowflake Ausgänge, wenn Sie eine Snowflake-Datenübertragung ausführen. Für Snowflake-Datenübertragungen fallen keine Egress-Gebühren an, wenn sich sowohl das Snowflake-Warehouse als auch der Amazon S3-Bucket in derselben Region befinden.
- Wenn Daten von AWS zu Google Cloudübertragen werden, fallen Gebühren für ausgehenden Traffic zwischen Clouds an.
Nächste Schritte
- Weitere Informationen zum BigQuery Data Transfer Service
- Migrieren Sie SQL-Code mit der Batch-SQL-Übersetzung.