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 keine inkrementellen Datenübertragungen.
  • Der Snowflake-Connector unterstützt nur Übertragungen aus Tabellen in einer einzelnen Snowflake-Datenbank und einem einzelnen Snowflake-Schema. 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.
  • Daten werden in Snowflake im Parquet-Datenformat extrahiert, bevor sie in BigQuery geladen werden:

Hinweise

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.

  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: Metadaten generieren und Übersetzungs-Engine ausführen
  7. Snowflake auf nicht unterstützte Datentypen prüfen
  8. Übertragungsinformationen erfassen

Google Cloud -Projekt vorbereiten

So erstellen und konfigurieren Sie Ihr Google Cloud Projekt für eine Snowflake-Übertragung:

  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. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen 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.

Staging-Bucket für AWS-gehostetes 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.

  1. Amazon S3-Bucket erstellen

  2. 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:

  1. Erstellen Sie einen dedizierten Amazon IAM-Nutzer und gewähren Sie ihm die Richtlinie AmazonS3ReadOnlyAccess.

  2. Erstellen Sie ein Amazon-Zugriffsschlüsselpaar für den IAM-Nutzer.

Staging-Azure Blob Storage-Container für ein 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.

  1. Erstellen Sie ein Azure-Speicherkonto und darin einen Speichercontainer.
  2. 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.

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.

  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. Um Zugriff auf den Staging-Bucket zu gewähren, 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

Snowflake-Nutzer mit den erforderlichen Berechtigungen erstellen

Bei einer Snowflake-Übertragung wird über eine JDBC-Verbindung eine Verbindung zwischen dem Snowflake-Connector und 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 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

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 Authentifizierung mit Schlüsselpaar konfigurieren.

Netzwerkrichtlinien hinzufügen

Bei öffentlichen 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.

In der folgenden Tabelle finden Sie eine Liste der IP-Adressen für die regionalen und multiregionalen Standorte, die für öffentliche Übertragungen verwendet werden. Sie können entweder die IP-Adressen hinzufügen, die dem Speicherort Ihres Datasets entsprechen, oder alle in der Tabelle aufgeführten IP-Adressen. Dies sind IP-Adressen, die von Google für Datenübertragungen mit BigQuery Data Transfer Service reserviert sind.

So fügen Sie eine IP-Adresse einer Zulassungsliste hinzu:

  1. Netzwerkregel erstellen mit type = IPV4. Der BigQuery Data Transfer Service verwendet eine JDBC-Verbindung, um eine Verbindung zum Snowflake-Konto herzustellen.
  2. Erstellen Sie eine Netzwerkrichtlinie mit der Netzwerkregel, die Sie zuvor erstellt haben, und der IP-Adresse aus der folgenden Tabelle.

Regionale Standorte

Beschreibung der Region Name der Region IP-Adressen
Amerika
Columbus, Ohio us-east5 34.162.72.184
34.162.173.185
34.162.205.205
34.162.81.45
34.162.182.149
34.162.59.92
34.162.157.190
34.162.191.145
Dallas us-south1 34.174.172.89
34.174.40.67
34.174.5.11
34.174.96.109
34.174.148.99
34.174.176.19
34.174.253.135
34.174.129.163
Iowa us-central1 34.121.70.114
34.71.81.17
34.122.223.84
34.121.145.212
35.232.1.105
35.202.145.227
35.226.82.216
35.225.241.102
Las Vegas us-west4 34.125.53.201
34.125.69.174
34.125.159.85
34.125.152.1
34.125.195.166
34.125.50.249
34.125.68.55
34.125.91.116
Los Angeles us-west2 35.236.59.167
34.94.132.139
34.94.207.21
34.94.81.187
34.94.88.122
35.235.101.187
34.94.238.66
34.94.195.77
Mexiko northamerica-south1 34.51.6.35
34.51.7.113
34.51.12.83
34.51.10.94
34.51.11.219
34.51.11.52
34.51.2.114
34.51.15.251
Montreal northamerica-northeast1 34.95.20.253
35.203.31.219
34.95.22.233
34.95.27.99
35.203.12.23
35.203.39.46
35.203.116.49
35.203.104.223
Northern Virginia us-east4 35.245.95.250
35.245.126.228
35.236.225.172
35.245.86.140
35.199.31.35
35.199.19.115
35.230.167.48
35.245.128.132
35.245.111.126
35.236.209.21
Oregon us-west1 35.197.117.207
35.199.178.12
35.197.86.233
34.82.155.140
35.247.28.48
35.247.31.246
35.247.106.13
34.105.85.54
Salt Lake City us-west3 34.106.37.58
34.106.85.113
34.106.28.153
34.106.64.121
34.106.246.131
34.106.56.150
34.106.41.31
34.106.182.92
São Paolo southamerica-east1 35.199.88.228
34.95.169.140
35.198.53.30
34.95.144.215
35.247.250.120
35.247.255.158
34.95.231.121
35.198.8.157
Santiago southamerica-west1 34.176.188.48
34.176.38.192
34.176.205.134
34.176.102.161
34.176.197.198
34.176.223.236
34.176.47.188
34.176.14.80
South Carolina us-east1 35.196.207.183
35.237.231.98
104.196.102.222
35.231.13.201
34.75.129.215
34.75.127.9
35.229.36.137
35.237.91.139
Toronto northamerica-northeast2 34.124.116.108
34.124.116.107
34.124.116.102
34.124.116.80
34.124.116.72
34.124.116.85
34.124.116.20
34.124.116.68
Europa
Belgien europe-west1 35.240.36.149
35.205.171.56
34.76.234.4
35.205.38.234
34.77.237.73
35.195.107.238
35.195.52.87
34.76.102.189
Berlin europe-west10 34.32.28.80
34.32.31.206
34.32.19.49
34.32.33.71
34.32.15.174
34.32.23.7
34.32.1.208
34.32.8.3
Finnland europe-north1 35.228.35.94
35.228.183.156
35.228.211.18
35.228.146.84
35.228.103.114
35.228.53.184
35.228.203.85
35.228.183.138
Frankfurt europe-west3 35.246.153.144
35.198.80.78
35.246.181.106
35.246.211.135
34.89.165.108
35.198.68.187
35.242.223.6
34.89.137.180
London europe-west2 35.189.119.113
35.189.101.107
35.189.69.131
35.197.205.93
35.189.121.178
35.189.121.41
35.189.85.30
35.197.195.192
Madrid europe-southwest1 34.175.99.115
34.175.186.237
34.175.39.130
34.175.135.49
34.175.1.49
34.175.95.94
34.175.102.118
34.175.166.114
Mailand europe-west8 34.154.183.149
34.154.40.104
34.154.59.51
34.154.86.2
34.154.182.20
34.154.127.144
34.154.201.251
34.154.0.104
Niederlande europe-west4 35.204.237.173
35.204.18.163
34.91.86.224
34.90.184.136
34.91.115.67
34.90.218.6
34.91.147.143
34.91.253.1
Paris europe-west9 34.163.76.229
34.163.153.68
34.155.181.30
34.155.85.234
34.155.230.192
34.155.175.220
34.163.68.177
34.163.157.151
Stockholm europe-north2 34.51.133.48
34.51.136.177
34.51.128.140
34.51.141.252
34.51.139.127
34.51.142.55
34.51.134.218
34.51.138.9
Turin europe-west12 34.17.15.186
34.17.44.123
34.17.41.160
34.17.47.82
34.17.43.109
34.17.38.236
34.17.34.223
34.17.16.47
Warschau europe-central2 34.118.72.8
34.118.45.245
34.118.69.169
34.116.244.189
34.116.170.150
34.118.97.148
34.116.148.164
34.116.168.127
Zürich europe-west6 34.65.205.160
34.65.121.140
34.65.196.143
34.65.9.133
34.65.156.193
34.65.216.124
34.65.233.83
34.65.168.250
Asiatisch-pazifischer Raum
Delhi asia-south2 34.126.212.96
34.126.212.85
34.126.208.224
34.126.212.94
34.126.208.226
34.126.212.232
34.126.212.93
34.126.212.206
Hongkong asia-east2 34.92.245.180
35.241.116.105
35.220.240.216
35.220.188.244
34.92.196.78
34.92.165.209
35.220.193.228
34.96.153.178
Jakarta asia-southeast2 34.101.79.105
34.101.129.32
34.101.244.197
34.101.100.180
34.101.109.205
34.101.185.189
34.101.179.27
34.101.197.251
Melbourne australia-southeast2 34.126.196.95
34.126.196.106
34.126.196.126
34.126.196.96
34.126.196.112
34.126.196.99
34.126.196.76
34.126.196.68
Mumbai asia-south1 34.93.67.112
35.244.0.1
35.200.245.13
35.200.203.161
34.93.209.130
34.93.120.224
35.244.10.12
35.200.186.100
Osaka asia-northeast2 34.97.94.51
34.97.118.176
34.97.63.76
34.97.159.156
34.97.113.218
34.97.4.108
34.97.119.140
34.97.30.191
Seoul asia-northeast3 34.64.152.215
34.64.140.241
34.64.133.199
34.64.174.192
34.64.145.219
34.64.136.56
34.64.247.158
34.64.135.220
Singapur asia-southeast1 34.87.12.235
34.87.63.5
34.87.91.51
35.198.197.191
35.240.253.175
35.247.165.193
35.247.181.82
35.247.189.103
Sydney australia-southeast1 35.189.33.150
35.189.38.5
35.189.29.88
35.189.22.179
35.189.20.163
35.189.29.83
35.189.31.141
35.189.14.219
Taiwan asia-east1 35.221.201.20
35.194.177.253
34.80.17.79
34.80.178.20
34.80.174.198
35.201.132.11
35.201.223.177
35.229.251.28
35.185.155.147
35.194.232.172
Tokio asia-northeast1 34.85.11.246
34.85.30.58
34.85.8.125
34.85.38.59
34.85.31.67
34.85.36.143
34.85.32.222
34.85.18.128
34.85.23.202
34.85.35.192
Naher Osten
Dammam me-central2 34.166.20.177
34.166.10.104
34.166.21.128
34.166.19.184
34.166.20.83
34.166.18.138
34.166.18.48
34.166.23.171
Doha me-central1 34.18.48.121
34.18.25.208
34.18.38.183
34.18.33.25
34.18.21.203
34.18.21.80
34.18.36.126
34.18.23.252
Tel Aviv me-west1 34.165.184.115
34.165.110.74
34.165.174.16
34.165.28.235
34.165.170.172
34.165.187.98
34.165.85.64
34.165.245.97
Afrika
Johannesburg africa-south1 34.35.11.24
34.35.10.66
34.35.8.32
34.35.3.248
34.35.2.113
34.35.5.61
34.35.7.53
34.35.3.17

Multiregionale Standorte

Beschreibung des multiregionalen Standorts Name des multiregionalen Standorts IP-Adressen
Rechenzentren in Mitgliedsstaaten der Europäischen Union1 EU 34.76.156.158
34.76.156.172
34.76.136.146
34.76.1.29
34.76.156.232
34.76.156.81
34.76.156.246
34.76.102.206
34.76.129.246
34.76.121.168
Rechenzentren in den USA US 35.185.196.212
35.197.102.120
35.185.224.10
35.185.228.170
35.197.5.235
35.185.206.139
35.197.67.234
35.197.38.65
35.185.202.229
35.185.200.120

1 Daten in der Multiregion EU werden nicht in den Rechenzentren europe-west2 (London) oder europe-west6 (Zürich) gespeichert.

Metadaten generieren und Übersetzungsmodul ausführen

Sie können diesen Abschnitt überspringen, wenn das Schema in Ihren Snowflake-Tabellen während einer Snowflake-Datenübertragung automatisch vom Snowflake-Connector erkannt werden soll.

Wenn Sie Ihr Schema jedoch manuell definieren möchten, z. B. um bestimmte Schemaattribute zu überschreiben, können Sie dazu die folgenden Schritte ausführen, um Ihre Metadaten zu generieren und die Übersetzungs-Engine auszuführen.

Der BigQuery Data Transfer Service für den Snowflake-Connector verwendet die Übersetzungs-Engine des BigQuery-Migrationsdienstes für die Schemazuordnung bei der Migration von Snowflake-Tabellen in BigQuery. Um eine Snowflake-Datenübertragung abzuschließen, müssen Sie zuerst Metadaten für die Übersetzung generieren und dann die Übersetzungs-Engine ausführen:

  1. Führen Sie dwh-migration-tool für Snowflake aus. Weitere Informationen finden Sie unter Metadaten für Übersetzung und Bewertung generieren.
  2. Laden Sie die generierte Datei metadata.zip in einen Cloud Storage-Bucket hoch. Die Datei metadata.zip wird als Eingabe für die Übersetzungs-Engine verwendet.
  3. Führen Sie den Batchübersetzungsdienst aus und geben Sie das Feld target_types als metadata an. Weitere Informationen finden Sie unter SQL-Abfragen mit der Translation API übersetzen.

    • Im Folgenden finden Sie ein Beispiel für einen Befehl zum Ausführen einer Batchübersetzung für Snowflake:
      curl -d "{
      \"name\": \"sf_2_bq_translation\",
      \"displayName\": \"Snowflake to BigQuery Translation\",
      \"tasks\": {
          string: {
            \"type\": \"Snowflake2BigQuery_Translation\",
            \"translation_details\": {
                \"target_base_uri\": \"gs://sf_test_translation/output\",
                \"source_target_mapping\": {
                  \"source_spec\": {
                      \"base_uri\": \"gs://sf_test_translation/input\"
                  }
                },
                \"target_types\": \"metadata\",
            }
          }
      },
      }" \
      -H "Content-Type:application/json" \
      -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows
    
    • Sie können den Status dieses Befehls in BigQuery auf der Seite SQL-Übersetzung prüfen. Die Ausgabe des Batchübersetzungsjobs wird in gs://translation_target_base_uri/metadata/config/ gespeichert.

Erforderliche Dienstkontoberechtigungen

Bei einem Snowflake-Transfer wird ein Dienstkonto verwendet, um Daten aus der Ausgabe der Übersetzungs-Engine im angegebenen Cloud Storage-Pfad zu lesen. Sie müssen dem Dienstkonto die Berechtigungen storage.objects.get und storage.objects.list erteilen.

Wir empfehlen, dass das Dienstkonto zum selben Google Cloud Projekt gehört, in dem die Übertragungskonfiguration und das Ziel-Dataset erstellt werden. Wenn sich das Dienstkonto in einem Google Cloud Projekt befindet, das sich von dem Projekt unterscheidet, in dem die BigQuery-Datenübertragung erstellt wurde, müssen Sie die projektübergreifende Dienstkontoautorisierung aktivieren.

Weitere Informationen finden Sie unter BigQuery-IAM-Rollen und -Berechtigungen.

Snowflake-Daten bewerten

BigQuery schreibt Daten aus Snowflake als Parquet-Dateien in Cloud Storage. Die Datentypen TIMESTAMP_TZ und TIMESTAMP_LTZ werden 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.

Ü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üssen.

  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 Details zur Datenquelle folgende Schritte aus:

    1. Geben Sie für Konto-ID eine eindeutige ID für Ihr Snowflake-Konto ein, die aus Ihrem Organisationsnamen und Ihrem Kontonamen besteht. 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 Auth mechanism (Authentifizierungsmechanismus) eine Authentifizierungsmethode für Snowflake-Nutzer aus. Weitere Informationen finden Sie unter Schlüsselpaar für die Authentifizierung generieren.
    4. Geben Sie unter Passwort das Passwort des Snowflake-Nutzers ein. Dieses Feld ist erforderlich, wenn Sie im Feld Auth mechanism (Authentifizierungsmechanismus) PASSWORD (Passwort) ausgewählt haben.
    5. Geben Sie für Privater Schlüssel den privaten Schlüssel ein, der mit dem öffentlichen Schlüssel des Snowflake-Nutzers verknüpft ist. Dieses Feld ist erforderlich, wenn Sie im Feld Auth mechanism (Authentifizierungsmechanismus) KEY_PAIR ausgewählt haben.
    6. 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.
    7. 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 in den Feldern Auth mechanism (Authentifizierungsmechanismus) und Is Private Key Encrypted (Ist der private Schlüssel verschlüsselt?) die Option KEY_PAIR ausgewählt haben.
    8. Geben Sie unter Warehouse ein Warehouse ein, das für die Ausführung dieses Datentransfers verwendet wird.
    9. 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 storage.objects.list und storage.objects.geterforderlichen Berechtigungen haben.
    10. Geben Sie unter Datenbank den Namen der Snowflake-Datenbank ein, die die in dieser Datenübertragung enthaltenen Tabellen enthält.
    11. Geben Sie unter Schema den Namen des Snowflake-Schemas ein, das die in dieser Datenübertragung enthaltenen Tabellen enthält.
    12. 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.
    13. 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 der Snowflake-Connector Ihr Schema automatisch erkennt.

      • Der Pfad muss dem Format translation_target_base_uri/metadata/config/db/schema/ entsprechen und mit / enden.
    14. Geben Sie unter Name des Speicherintegrationsobjekts den Namen des Snowflake-Speicherintegrationsobjekts ein.

    15. Wählen Sie für Cloudanbieter je nach Cloudanbieter, der Ihr Snowflake-Konto hostet, AWS, AZURE oder GCP aus.

    16. Geben Sie im Feld Amazon S3 URI (Amazon S3-URI) den URI des Amazon S3-Buckets ein, der als Staging-Bereich verwendet werden soll. Nur erforderlich, wenn Ihr Cloud-Anbieter AWS ist.

    17. Geben Sie bei Access key ID (Zugriffsschlüssel-ID) und Secret access key (Geheimer Zugriffsschlüssel) das Zugriffsschlüsselpaar ein. Nur erforderlich, wenn Ihr Cloud-Anbieter AWS ist.

    18. Geben Sie für Azure Storage-Konto und Azure Storage-Container den Namen des Speicherkontos und des Containers von Azure Blob Storage ein, die als Stagingbereich verwendet werden sollen. Nur erforderlich, wenn Ihr Cloud-Anbieter AZURE ist.

    19. Geben Sie unter SAS-Token das für den Container generierte SAS-Token ein. Nur erforderlich, wenn Ihr Cloud-Anbieter AZURE ist.

    20. Geben Sie als GCS-URI den URI des Cloud Storage ein, der als Staging-Bereich verwendet werden soll. Nur erforderlich, wenn Ihr Cloud-Anbieter GCP ist.

  7. 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.
  8. Klicken Sie auf Speichern.

  9. 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_id nicht 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_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"}'.

Folgende Parameter sind für eine Snowflake-Übertragungskonfiguration erforderlich:

  • 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 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 verknüpft ist, der dem Snowflake-Nutzer zugeordnet 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 KEY_PAIR im Feld auth_mechanism und true im Feld is_private_key_encrypted 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 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;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.

  • translation_output_gcs_path: (Optional) Geben Sie 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 der Snowflake-Connector Ihr Schema automatisch erkennt.

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

  • cloud_provider: Geben Sie AWS, AZURE oder GCP ein, 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 Ihr cloud_provider AWS ist.

  • aws_access_key_id: Geben Sie das Zugriffsschlüsselpaar ein. Nur erforderlich, wenn Ihr cloud_provider AWS ist.

  • aws_secret_access_key: Geben Sie das Zugriffsschlüsselpaar ein. Nur erforderlich, wenn Ihr cloud_provider AWS ist.

  • azure_storage_account: Geben Sie den Namen des Speicherkontos ein, das als Stagingbereich verwendet werden soll. Nur erforderlich, wenn Ihr cloud_provider AZURE ist.

  • staging_azure_container: Geben Sie den Container in Azure Blob Storage ein, der als Stagingbereich verwendet werden soll. Nur erforderlich, wenn Ihr cloud_provider AZURE ist.

  • azure_sas_token: Geben Sie das SAS-Token ein. Nur erforderlich, wenn Ihr cloud_provider AZURE ist.

  • staging_gcs_uri : Geben Sie den URI des Cloud Storage ein, der als Stagingbereich verwendet werden soll. Nur erforderlich, wenn Ihr cloud_provider GCP ist.

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",
  "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.

Kontingente und Limits

BigQuery hat 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 eine Tabelle mit mehr als 15 TB migrieren möchten, wenden Sie sich bitte an dts-migration-preview-support@google.com.

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