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 mithilfe von Zulassungslisten für öffentliche IP-Adressen von Snowflake zu BigQuery zu migrieren.

Übersicht

Der Snowflake-Connector aktiviert Migrations-Agents in der Google Kubernetes Engine und löst einen Ladevorgang von Snowflake zu einem Staging-Bereich im Cloud Storage-Bucket aus.

  • Bei Amazon Web Services (AWS)- oder Azure- oder Google Cloud-gehosteten Snowflake-Konten werden die Daten zuerst in Ihrem Cloud Storage-Bucket bereitgestellt und dann mit dem BigQuery Data Transfer Service an BigQuery übertragen.

Das folgende Diagramm zeigt öffentliche Datenübertragungen von Snowflake-Konten, die auf Amazon Web Services (AWS) oder Azure gehostet werden, oder von Snowflake-Konten, die auf Google Cloudgehostet werden.

Öffentliche Datenübertragungen von AWS- oder Azure- oder Google Cloud-gehosteten Snowflake-Konten zu BigQuery

Beschränkungen

Für Datenübertragungen mit dem Snowflake-Connector gelten die folgenden Einschränkungen:

  • Der Snowflake-Connector unterstützt nur Übertragungen aus 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, mit der Daten von Snowflake in Ihren Amazon S3-Bucket, Azure Blob Storage-Container oder Cloud Storage-Bucket geladen werden, ist 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. Parquet-Dateien unterstützen die Datentypen TIMESTAMP_TZ und TIMESTAMP_LTZ nicht. 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 Einführung in Amazon S3-Datenübertragungen.

Hinweis

Bevor Sie eine Snowflake-Übertragung einrichten, müssen Sie alle in diesem Abschnitt aufgeführten Schritte ausführen. Im Folgenden finden Sie eine Liste aller erforderlichen Schritte.

  1. Projekt in Google Cloud vorbereiten
  2. Erforderliche BigQuery-Rollen
  3. Staging-Bucket vorbereiten
  4. Snowflake-Nutzer mit den erforderlichen Berechtigungen erstellen
  5. Netzwerkrichtlinien hinzufügen
  6. Optional: Schemaerkennung und -zuordnung
  7. Snowflake auf nicht unterstützte Datentypen prüfen
  8. Optional: Inkrementelle Übertragungen aktivieren
  9. Optional: Private Konnektivität aktivieren
  10. Übertragungsinformationen erfassen
  11. Wenn Sie einen kundenverwalteten 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

Erstellen und konfigurieren Sie Ihr Google Cloud -Projekt für eine Snowflake-Übertragung mit den folgenden Schritten:

  1. Erstellen Sie ein Google Cloud -Projekt oder wählen Sie ein vorhandenes Projekt aus.

  2. Überprüfen Sie, ob Sie alle erforderlichen Aktionen ausgeführt haben, damit Sie den BigQuery Data Transfer Service aktivieren können.

  3. 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 zum Erstellen einer BigQuery Data Transfer Service-Datenübertragung erforderlich:

  • 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 bigquery.admin-Zugriff gewähren.

Staging-Bucket vorbereiten

Erstellen Sie zur Vorbereitung einer Snowflake-Datenübertragung einen Staging-Bucket und konfigurieren Sie ihn so, dass Schreibzugriff von Snowflake möglich ist. Sie müssen die Snowflake-Daten in einem Cloud Storage-Bucket bereitstellen, bevor Sie sie in BigQuery laden können.

  1. Cloud Storage-Bucket erstellen
  2. Erstellen und konfigurieren Sie ein Snowflake-Speicherintegrationsobjekt, damit Snowflake Daten als externe Phase in den Cloud Storage-Bucket schreiben kann.
  3. Wenn Sie den Befehl DESCRIBE INTEGRATION ausführen, wird das Cloud Storage-Dienstkonto im Feld STORAGE_GCP_SERVICE_ACCOUNT aufgeführt. Gewähren Sie dem Cloud Storage-Dienstkonto die folgenden Berechtigungen für den Cloud Storage-Bucket:
    • storage.objects.create
    • storage.objects.delete
    • storage.objects.get
    • storage.objects.list
  4. Wenn Sie Zugriff auf den Staging-Bucket gewähren möchten, weisen Sie dem DTS-Dienst-Agent mit dem folgenden Befehl die Rolle roles/storage.objectViewer zu:

    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

Erstellen Sie für eine private Snowflake-Datenübertragung den Staging-Bucket und konfigurieren Sie ihn für die private Konnektivität.

Snowflake-Nutzer mit den erforderlichen Berechtigungen erstellen

Während einer Snowflake-Übertragung stellt der Snowflake-Connector über eine JDBC-Verbindung eine Verbindung zu Ihrem Snowflake-Konto her. 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 INTEGRATION STORAGE_INTEGRATION_OBJECT_NAME
    TO ROLE MIGRATION_ROLE;

Ersetzen Sie Folgendes:

  • MIGRATION_ROLE: der Name der benutzerdefinierten Rolle, die Sie erstellen
  • WAREHOUSE_NAME: der Name Ihres Data Warehouse
  • DATABASE_NAME: der Name Ihrer Snowflake-Datenbank
  • SCHEMA_NAME: der Name Ihres Snowflake-Schemas
  • TABLE_NAME: der Name der Snowflake-Instanz, die in dieser Datenübertragung enthalten ist
  • STORAGE_INTEGRATION_OBJECT_NAME: der Name Ihres Snowflake-Speicherintegrationsobjekts.

Schlüsselpaar für die Authentifizierung generieren

Aufgrund der Einstellung der Anmeldung mit Ein-Faktor-Passwort durch Snowflake 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 Authentifizierung mit Schlüsselpaaren konfigurieren.

Entladen an externe Inline-Speicherorte zulassen

Der Snowflake-Connector entlädt Daten während der Übertragung an Inline-externe Speicherorte. Wenn Ihr Snowflake-Konto das Entladen auf Inline-Speicherorte beschränkt, schlägt die Übertragung fehl.

Führen Sie den folgenden SQL-Befehl in Ihrem Snowflake-Konto aus, um das Entladen an Inline-Speicherorten zuzulassen. Sie benötigen die Rolle ACCOUNTADMIN in Snowflake, um diesen Befehl auszuführen.

ALTER ACCOUNT SET PREVENT_UNLOAD_TO_INLINE_URL = false;

Netzwerkrichtlinien hinzufügen

Für die öffentliche Verbindung lässt das Snowflake-Konto standardmäßig eine öffentliche Verbindung mit Datenbankanmeldedaten zu. 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 Daten von Snowflake zu BigQuery übertragen, können Sie mit dem BigQuery Data Transfer Service das Schema und die Datentypzuordnung automatisch erkennen lassen, um Ihr Schema zu definieren. 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 für Snowflake.

Inkrementelle Übertragungen aktivieren

Informationen zum Einrichten einer inkrementellen Snowflake-Datenübertragung finden Sie unter Inkrementelle Übertragungen für Snowflake einrichten.

Private Konnektivität aktivieren

Wenn Sie eine private Snowflake-Datenübertragung erstellen möchten, müssen Sie Ihr Netzwerk für private Konnektivität konfigurieren.

Übertragungsinformationen erfassen

Erfassen Sie die Informationen, die Sie zum Einrichten der Migration mit BigQuery Data Transfer Service benötigen:

Snowflake-Übertragung einrichten

Wählen Sie eine der folgenden Optionen aus:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Datenübertragungen“ auf.

    Zu „Datenübertragungen”

  2. Klicken Sie auf Übertragung erstellen.

  3. Wählen Sie im Abschnitt Quelltyp die Option Snowflake-Migration aus der Liste Quelle aus.

  4. 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öchten.

  5. Wählen Sie im Abschnitt Destination settings (Zieleinstellungen) das von Ihnen erstellte Dataset aus der Liste Dataset aus.

  6. Führen Sie im Abschnitt Snowflake-Anmeldedaten folgende Schritte aus:

    1. Geben Sie unter Konto-ID eine eindeutige Kennung für Ihr Snowflake-Konto ein. Diese besteht aus einer Kombination aus dem Namen Ihrer Organisation und dem Kontonamen. Die ID ist das Präfix der Snowflake-Konto-URL und nicht die vollständige URL. Beispiel: ACCOUNT_IDENTIFIER.snowflakecomputing.com.
    2. 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.
    3. Wählen Sie unter Authentifizierungsmechanismus eine Snowflake-Nutzerauthentifizierungsmethode aus:

      PASSWORT

      • Geben Sie unter Passwort das Passwort des Snowflake-Nutzers ein.

      KEY_PAIR

      • Geben Sie unter Privater Schlüssel den privaten Schlüssel ein, der mit dem öffentlichen Schlüssel des Snowflake-Nutzers verknüpft ist.
      • Wählen Sie das Feld Ist der private Schlüssel verschlüsselt aus, wenn der private Schlüssel mit einer Passphrase verschlüsselt ist.
      • Geben Sie unter Passphrase für privaten Schlüssel die Passphrase für den verschlüsselten privaten Schlüssel ein. Dieses Feld ist erforderlich, wenn Sie 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 dieser Datenübertragung verwendet wird.
    • Geben Sie unter Snowflake-Datenbank den Namen der Snowflake-Datenbank ein, die die Tabellen für diese Datenübertragung enthält.
    • Geben Sie unter Snowflake-Schema den Namen des Snowflake-Schemas ein, das die Tabellen für diese Datenübertragung enthält.
  7. Führen Sie im Abschnitt Speicherkonfiguration die folgenden Schritte aus:

    1. Geben Sie unter Name des Speicherintegrationsobjekts den Namen des Snowflake-Speicherintegrationsobjekts ein.
    2. Optional: Geben Sie unter Maximale Dateigröße die maximale Größe jeder Datei an, die von Snowflake in den Staging-Speicherort entladen wird (in MB).
    3. Wählen Sie für Cloud-Anbieter je nachdem, welcher Cloud-Anbieter Ihr Snowflake-Konto hostet, AWS, AZURE oder GCP aus.

  8. Führen Sie im Abschnitt Dienstkonto folgende Schritte aus:

    1. 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.list und storage.objects.get haben.
  9. Führen Sie im Abschnitt Schemakonfiguration die folgenden Schritte aus:

    1. Wählen Sie für Aufnahmetyp die Option Vollständig oder Inkrementell aus. Weitere Informationen finden Sie unter Inkrementelle Übertragungen konfigurieren.
    2. 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;ordertb führt zu Übereinstimmungen mit Tabellen, die lineitem und ordertb heißen.
      • .* führt zu Übereinstimmung mit allen Tabellen.
    3. Optional: Wählen Sie für Ausgabe der BigQuery Translation Engine verwenden dieses Feld aus, wenn Sie einen benutzerdefinierten Übersetzungsausgabepfad angeben möchten.
    4. Optional: Geben Sie unter GCS-Pfad für Übersetzungsausgabe einen Pfad zum Cloud Storage-Ordner an, der die Schemazuordnungsdateien der Übersetzungs-Engine enthält. Sie können dieses Feld leer lassen, damit der Snowflake-Connector Ihr Schema automatisch erkennt.
      • Der Pfad sollte das Format translation_target_base_uri/metadata/config/db/schema/ haben und mit / enden.
    5. Optional: Geben Sie unter Benutzerdefinierter Schemadateipfad den Cloud Storage-Pfad zu einer benutzerdefinierten Schemadatei an.
    6. Optional: Wählen Sie für Snowflake-NUMBER mit Skalierung 0 BigQuery-INT64 zuordnen dieses Feld aus, wenn Snowflake-NUMBER(p, 0)-Typen BigQuery-INT64 zugeordnet werden sollen.
  10. Führen Sie im Abschnitt Netzwerkverbindung folgende Schritte aus:

    1. Wenn Sie eine private Datenübertragung erstellen, wählen Sie für Privates Netzwerk verwenden die Option Wahr aus.
    2. Wenn Sie eine private Verbindung erstellen, geben Sie für PSC-Dienstanhang den URI des Dienstanhangs ein. Weitere Informationen finden Sie unter Private Snowflake-Übertragungskonfiguration erstellen.
    3. Geben Sie für 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.
  11. Optional: Gehen Sie im Abschnitt Benachrichtigungsoptionen so vor:

    1. 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.
    2. 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.
  12. 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.

  13. Klicken Sie auf Speichern.

  14. Die Google Cloud Console zeigt alle Details zur Übertragungseinrichtung an, einschließlich eines Ressourcennamens 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_id nicht angegeben ist, wird das Standardprojekt verwendet.
  • DATA_SOURCE: die Datenquelle, snowflake_migration.
  • DATASET: 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_ID gehö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. Diese ist eine Kombination aus dem Namen Ihrer Organisation und dem Kontonamen. 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 verwendet werden, um die Snowflake-Tabellen zu übertragen.
  • auth_mechanism: Geben Sie die Snowflake-Nutzerauthentifizierungsmethode an. Unterstützte Werte sind PASSWORD und KEY_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 Sie PASSWORD im Feld auth_mechanism angegeben haben.
  • private_key : Geben Sie den privaten Schlüssel an, der mit dem öffentlichen Schlüssel des Snowflake-Nutzers verknüpft ist. Dieses Feld ist erforderlich, wenn Sie KEY_PAIR im Feld auth_mechanism angegeben haben.
  • is_private_key_encrypted : Geben Sie true an, 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 Sie im Feld auth_mechanism den Wert KEY_PAIR und im Feld is_private_key_encrypted den Wert true angegeben 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 Berechtigungen storage.objects.list und storage.objects.get haben.
  • database: Geben Sie den Namen der Snowflake-Datenbank an, die die Tabellen enthält, die in diese Datenübertragung einbezogen werden sollen.
  • schema: Geben Sie den Namen des Snowflake-Schemas an, das die Tabellen enthält, die in diese Datenübertragung einbezogen werden sollen.
  • 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;ordertb führt zu Übereinstimmungen mit Tabellen, die lineitem und ordertb heiß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: Geben Sie den Aufnahmemodus für die Übertragung an. Unterstützte Werte sind FULL und INCREMENTAL. Weitere Informationen finden Sie unter Inkrementelle Übertragungen konfigurieren.

  • 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 der Snowflake-Connector Ihr Schema automatisch erkennt.

    • Der Pfad sollte das Format gs://translation_target_base_uri/metadata/config/db/schema/ haben und mit / enden.
  • storage_integration_object_name: Geben Sie den Namen des Snowflake-Speicherintegrationsobjekts an.

  • max_file_size_mb: (Optional) Geben Sie die maximale Größe jeder Datei an, die von Snowflake in den Staging-Speicherort entladen wird, in MB. Der Wert muss zwischen 16 und 5120 liegen. Der Standardwert ist 512.

  • staging_gcs_uri : Geben Sie den URI des Cloud Storage-Buckets ein, der für das Staging Ihrer Daten verwendet werden soll.

  • use_private_network: Wenn Sie eine private Datenübertragung erstellen, legen Sie TRUE fest.

  • 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",
  "max_file_size_mb": "512",
  "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 das Datenvolumen der exportierten Tabelle größer als bei Snowflake angezeigt wird.

Wenn Sie die Ladezeiten für größere Tabellen verbessern und das BigQuery-Ladelimit von 15 TB aufheben möchten, geben Sie den Jobtyp PIPELINE für Ihre Reservierungszuweisung an.

Aufgrund des Konsistenzmodells von Amazon S3 werden einige Dateien möglicherweise nicht in die Übertragung an BigQuery einbezogen.

Leistung der Datenübertragung optimieren

Sie können die Leistung Ihrer Datenübertragungen überwachen, indem Sie die Logs für die Datenübertragung aufrufen. Wir empfehlen die folgenden Optimierungsschritte, um die Leistung Ihrer Datenübertragungen zu verbessern:

  • Snowflake-Instanz, Staging-Bucket und BigQuery-Dataset in derselben Region speichern
  • So können Sie die Geschwindigkeit beim Entladen von Tabellen verbessern:
    • Erhöhen Sie die Größe Ihres virtuellen Snowflake-Warehouse, insbesondere bei der Übertragung großer Snowflake-Tabellen (1 TiB oder mehr).
    • Passen Sie die Option MAX_FILE_SIZE in der Übertragungskonfiguration an.
      • Kleinere Dateigrößen können die Übertragungsgeschwindigkeit verbessern. Wenn die Dateien jedoch zu klein sind, kann dies zu einer zu großen Anzahl von Dateien führen.
  • Sie können die Ladegeschwindigkeit von Tabellen verbessern, indem Sie die Anzahl der BigQuery-Slot-Reservierungen für die Jobtypen PIPELINE und QUERY erhöhen.
  • Vermeiden Sie bei einer vollständigen Übertragung das Clustering und die Partitionierung der BigQuery-Tabelle.
  • Wenn Sie eine inkrementelle Übertragung im Upsert-Modus durchführen, sollten Sie Clustering und Partitionierung für Primärschlüsselspalten in Betracht ziehen, um die Übertragungsleistung zu verbessern.
    • Vermeiden Sie jedoch das Clustern und Partitionieren von Spalten, die keine Primärschlüssel sind, um langsamere Zusammenführungsvorgänge zu vermeiden.

Preise

Informationen zu den Preisen 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, fallen bei der Snowflake-Datenübertragung Gebühren für ausgehenden Traffic an. Für Snowflake-Datenübertragungen fallen keine Gebühren für ausgehenden Traffic 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