Schemaerkennung und ‑zuordnung für Snowflake
In diesem Leitfaden wird beschrieben, wie Sie Ihr Schema definieren, wenn Sie Daten von Snowflake zu BigQuery übertragen. Sie können den BigQuery Data Transfer Service verwenden, um Schema und Datentypzuordnung automatisch zu erkennen, oder die Übersetzungs-Engine nutzen, um Schema und Datentypen manuell zu definieren.
Automatische Erkennung des Standardschemas aktivieren
Der Snowflake-Connector kann das Schema Ihrer Snowflake-Tabelle automatisch erkennen. Wenn Sie die automatische Schemaerkennung verwenden möchten, können Sie das Feld GCS-Pfad für Übersetzungsausgabe leer lassen, wenn Sie einen Snowflake-Übertrag einrichten.
In der folgenden Liste sehen Sie, wie der Snowflake-Connector Ihre Snowflake-Datentypen in BigQuery zuordnet:
- Die folgenden Datentypen werden in BigQuery als
STRINGzugeordnet:TIMESTAMP_TZTIMESTAMP_LTZOBJECTVARIANTARRAY
- Die folgenden Datentypen werden in BigQuery als
TIMESTAMPzugeordnet:TIMESTAMP_NTZ
Alle anderen Snowflake-Datentypen werden direkt ihren entsprechenden Typen in BigQuery zugeordnet.
Schema manuell mit der Ausgabe der Übersetzungs-Engine definieren
Der BigQuery Data Transfer Service für Snowflake-Connector verwendet die Übersetzungs-Engine des BigQuery-Migrationsdienstes für die Schemazuordnung bei der Migration von Snowflake-Tabellen in BigQuery.
Wenn Sie Ihr Schema manuell definieren möchten (z. B. um bestimmte Schemaattribute zu überschreiben), können Sie Ihre Metadaten generieren und dann die Übersetzungs-Engine ausführen.
Beschränkungen
Daten werden in Snowflake im Parquet-Datenformat extrahiert, bevor sie in BigQuery geladen werden:
- Die folgenden Parquet-Datentypen werden nicht unterstützt:
TIMESTAMP_TZ,TIMESTAMP_LTZ- Weitere Informationen finden Sie unter Snowflake-Daten analysieren.
Die folgenden Parquet-Datentypen werden nicht unterstützt, können aber konvertiert werden:
TIMESTAMP_NTZOBJECT,VARIANT,ARRAY
Mit der globalen YAML-Konfiguration für die Typkonvertierung können Sie das Standardverhalten dieser Datentypen beim Ausführen der Übersetzungs-Engine überschreiben.
Die YAML-Konfiguration könnte so aussehen:
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP json: VARCHAR
- Die folgenden Parquet-Datentypen werden nicht unterstützt:
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 Cloud de Confiance by S3NS Projekt gehört, in dem die Übertragungskonfiguration und das Ziel-Dataset erstellt werden. Wenn sich das Dienstkonto in einem Cloud de Confiance by S3NS 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.
Schemazuordnung manuell definieren
So definieren Sie die Schemazuordnung manuell:
- Führen Sie
dwh-migration-toolfür Snowflake aus. Weitere Informationen finden Sie unter Metadaten für Übersetzung und Bewertung generieren. - Laden Sie die generierte Datei
metadata.zipin einen Cloud Storage-Bucket hoch. Die Dateimetadata.zipwird als Eingabe für die Übersetzungs-Engine verwendet. Führen Sie den Batchübersetzungsdienst aus und geben Sie das Feld
target_typesalsmetadataan. 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.