Allgemeine Informationen zum Openflow Connector for Google BigQuery¶
Bemerkung
Dieser Connector unterliegt den `Nutzungsbedingungen für Snowflake Connector<https://www.snowflake.com/legal/snowflake-connector-terms/>`_.
Openflow Connector for Google BigQuery verbindet eine GoogleBigQuery-Projekt auf Snowflake und repliziert Daten aus ausgewählten Datensätzen, Tabellen und Ansichten nach einem Zeitplan. Der Konnektor führt zunächst ein vollständiges Laden für jede Tabelle durch, gefolgt von inkrementellen Aktualisierungen unter Verwendung von BigQuery, der nativen Änderungsverfolgungsfunktion. Ansichten werden mit einer Abschneiden-und-Laden-Strategie repliziert.
Anwendungsfälle¶
Der Konnektor unterstützt die folgenden Anwendungsfälle:
Replikation in Snowflake: Kontinuierliches Spiegeln von Metadatensets aus BigQuery in Snowflake für nachgelagerte Analysen und Modellierung. Inkrementelle Änderungen erfolgen nach einem Zeitplan mit einem Verzögerungsfenster von 10 Minuten.
Selektive Replikation: Definieren Sie, welche Regionen, Datensets, Tabellen und Ansichten eingeschlossen werden sollen, indem Sie Namen oder Regex-Filter für eine umfassende, kontrollierte Abdeckung verwenden.
Migration und Änderungserfassung: Führen Sie ein einmaliges Laden des Snapshots für Migrationen durch und führen Sie dann inkrementelle Synchronisierungen mit dem Änderungsverlauf von BigQuery aus, um Tabellen synchron zu halten.
Ansichtsreplikation: Replizieren Sie Standard- und materialisierte BigQuery-Ansichten in Snowflake unter Verwendung einer Abschneide- und Ladestrategie nach einem konfigurierbaren Zeitplan.
Lebenszyklus der Tabellenreplikation¶
Der Replikationszyklus einer Tabelle beginnt mit der Erkennung des Schemas und einem ersten Laden des Snapshots der Daten. Der Zyklus geht zur inkrementellen Synchronisierung über, nachdem die Daten in Snowflake aufgenommen wurden.
Schema-Introspektion: Der Konnektor erkennt das Schema der Quelltabelle, validiert seine Datentypen und erstellt ein entsprechendes Zielschema und eine entsprechende Tabelle in Snowflake.
Snapshot Load: Nach dem Erstellen des Schemas und der Tabelle erstellt der Konnektor eine vollständige Kopie aller vorhandenen Daten aus der BigQuery-Tabelle in Snowflake. Dieser Prozess wird nacheinander für jede Tabelle in der Konfiguration ausgeführt.
Inkrementelle Synchronisierung: Sobald das erstmalige Laden abgeschlossen ist, wechselt die Tabelle in einen geplanten inkrementellen Synchronisierungsmodus. Bei jeder Ausführung verwendet der Konnektor die CHANGES-Funktion von BigQuery zum Lesen des Journals von Änderungen auf Zeilenebene (Einfügungen, Aktualisierungen, Löschungen), die seit der letzten Synchronisierung vorgenommen wurden. Diese Änderungen werden dann abgerufen und in der Zieltabelle in Snowflake zusammengeführt.
Openflow-Anforderungen¶
Die Mindestlaufzeitgröße muss Medium sein. Verwenden Sie eine größere Laufzeitumgebung und ein Openflow-Setup mit mehreren Knoten, wenn Sie große Datenmengen replizieren.
Einschränkungen¶
BigQuery garantiert, dass Datenstreams, die zum Abrufen von Quelldaten verwendet werden, für mindestens 6 Stunden gültig bleiben. Daher muss der Prozess des Lesens der Quelltabelle in weniger als 6 Stunden abgeschlossen sein, damit die Datenstreams nicht ablaufen. Sie müssen eine größere Laufzeitumgebung mit mehreren Knoten verwenden, wenn Sie Tabellen mit Datenmengen aufnehmen, die größer als 100GB sind.
Der BIGNUMERIC-Typ von BigQuery unterstützt eine höhere Genauigkeit (bis zu 76 Stellen) als der SnowflakeNUMBER-Typ (38 Stellen). Der Konnektor kann keine Werte aus BIGNUMERIC-Spalten aufnehmen, die das Snowflake-Limit überschreiten.
Der Konnektor unterstützt nicht die Replikation von externen Tabellen.
Die Replikation von Ansichten verwendet nur eine Abschneiden-und-Laden-Strategie. Inkrementelle Synchronisierung (CDC) wird für Ansichten nicht unterstützt.
Inkrementelle Synchronisierungen erfordern einen Primärschlüssel, um Aktualisierungen und Löschungen korrekt zu verarbeiten. Bei Tabellen ohne Primärschlüssel unterstützt der Konnektor keine Löschungen und behandelt Aktualisierungen wie neue Einfügungen.
Bemerkung
Sie müssen sicherstellen, dass die Einschränkungen für den Primärschlüssel eingehalten werden. Wenn das Feld, das als Primärschlüssel markiert ist, nicht eindeutig ist, kann es im inkrementellen Modus zu Dateninkonsistenzen kommen.
Der Konnektor verwendet die`BigQuery CHANGES<https://cloud.google.com/bigquery/docs/reference/standard-sql/time-series-functions#changes>`_-Funktion für inkrementelle Aktualisierungen. Da diese Funktion nicht die letzten zehn Minuten des Tabellenverlaufs abfragen kann, haben replizierte Daten im inkrementellen Modus eine Verzögerung von mindestens 10 Minuten hinter der Quelle.
Der inkrementelle Synchronisierungsprozess ist aufgrund der BigQuery CHANGES-Funktion auf ein maximales Datenfenster von 24 Stunden beschränkt. Wenn die Replikationsverzögerung für eine Tabelle diesen Zeitraum überschreitet, kürzt der Konnektor das Änderungsfenster auf 24 Stunden ab, um mit der Synchronisierung fortzufahren. Dieses Kürzung kann zu Datenverlust führen.
Der Konnektor erbt alle anderen Einschränkungen der BigQuery CHANGES-Funktion. Weitere Informationen finden Sie in der `Dokumentation zur BigQuery CHANGES-Funktion<https://cloud.google.com/bigquery/docs/reference/standard-sql/time-series-functions#changes>`_.
Replikation von Ansichten¶
Der Konnektor unterstützt die Replikation von Standardansichten und materialisierten Ansichten von BigQuery zu Snowflake. Im Gegensatz zur Tabellenreplikation unterstützen Ansichten keine inkrementelle Synchronisierung (CDC). Stattdessen verwendet der Konnektor eine Abschneiden und Laden-Strategie: Bei jedem Synchronisierungszyklus ersetzt der Konnektor die Daten in der Snowflake-Zieltabelle vollständig durch den aktuellen Inhalt der Quellansicht.
Die Synchronisierungshäufigkeit der Ansicht wird getrennt von der inkrementellen Synchronisierungshäufigkeit der Tabelle mit dem Parameter View Sync Frequency konfiguriert. Ausführungen überschneiden sich nicht. Wenn ein Zyklus länger dauert als das konfigurierte Intervall, wartet die nächste Ausführung, bis die vorherige Ausführung beendet ist.
Sie können mit den Parametern Included View Names und Included View Names Regex filtern, welche Ansichten repliziert werden sollen. Diese Filter gelten für alle für die Replikation ausgewählten Datensets.
Der Konnektor erstellt temporäre Tabellen in BigQuery während der Ansichtserfassung. Verwenden Sie den Parameter Temporary Table Dataset, um ein dediziertes Datenset für diese temporären Tabellen anzugeben. Snowflake empfiehlt, für temporäre Tabellen ein separates Datenset zu verwenden und das aufgenommene Datenset für diesen Zweck nicht zu verwenden.
Zuordnung von Datentypen¶
Der Konnektor ordnet BigQuery-Datentypen den entsprechenden Snowflake-Datentypen zu.
BigQuery-Datentyp |
Snowflake-Datentyp |
|---|---|
BIGNUMERIC |
NUMBER |
NUMERIC |
NUMBER |
GEOGRAPHY |
VARCHAR |
DATETIME |
TIMESTAMP_NTZ |
JSON |
OBJECT |
STRUCT |
OBJECT |
RANGE |
OBJECT |
INTERVAL |
OBJECT |
TIMESTAMP |
TIMESTAMP_NTZ |
DATE |
DATE |
TIME |
TIME |
INT64 / INTEGER |
NUMBER |
FLOAT64 |
FLOAT |
BOOL / BOOLEAN |
BOOLEAN |
STRING |
VARCHAR |
BYTES |
BINARY |
ARRAY |
ARRAY |
Verfolgen von Datenänderungen in Google BigQuery¶
Die Funktionalität des Konnektors zur inkrementellen Synchronisierung basiert auf der nativen CHANGES-Funktion von BigQuery. Wenn Sie den Änderungsverlauf für eine Quelltabelle aktivieren, führt BigQuery ein internes Journal mit allen Änderungen auf Zeilenebene (Einfügungen, Aktualisierungen und Löschungen).
Der Konnektor fragt dieses Journal nach einem konfigurierten inkrementellen Synchronisierungsplan ab, um einen Feed der Änderungen abzurufen. Der Konnektor materialisiert diese Änderungen in einer Journaltabelle innerhalb desselben BigQuery-Datensatzes. Diese Journaltabelle folgt einer einheitlichen Namenskonvention: <sourceTableName>_<incremental_number>_<hash>_journal
Diese Journaltabellen werden während des Replikationsprozesses vollständig vom Konnektor verwaltet und werden verwendet, um Daten in der endgültigen Zieltabelle in Snowflake zusammenzuführen.
Warnung
Ändern Sie die Journaltabellen in keiner Weise. Das Ändern von Journaltabellen kann den Synchronisierungsprozess unterbrechen und zu Problemen mit der Datenintegrität führen.
Die Zusammenführungsoperation behandelt Änderungen für Tabellen mit einem Primärschlüssel (PK) anders als Tabellen ohne.
Tabellen mit einem Primärschlüssel¶
Bei Tabellen mit einem Primärschlüssel behandelt der Konnektor Datenänderungen wie folgt:
- Einfügungen und Aktualisierungen:
Zeilen, die als
INSERToderUPDATEidentifiziert wurden, werden in die entsprechende Snowflake-Tabelle als „Upsert“ eingefügt.- Löschungen:
Um den Datenverlauf zu bewahren, verwendet der Konnektor eine Strategie des vorläufigen Löschens (Soft Delete). Anstatt eine gelöschte Zeile physisch aus Snowflake zu entfernen, führt der Konnektor ein
UPDATEfür die Zielzeile durch, indem die_SNOWFLAKE_DELETED-Spalte aufTRUEeingestellt wird.
Tabellen ohne Primärschlüssel¶
Bei Tabellen ohne einen Primärschlüssel behandelt der Konnektor Datenänderungen wie folgt:
- Einfügungen und Aktualisierungen:
Zeilen, die als
INSERToderUPDATEidentifiziert wurden, werden auf die gleiche Weise behandelt und in die entsprechende Snowflake-Tabelle eingefügt.- Löschungen:
Nicht unterstützt.
Bemerkung
Der Konnektor fügt automatisch die Spalte _SNOWFLAKE_DELETED (BOOLEAN) zum Schema der Zieltabelle hinzu, wenn diese erstellt wird.
Konfigurierter Zeitplan für die Synchronisierungshäufigkeit vs. tatsächliche Synchronisierungshäufigkeit¶
Der Zeitplan für die inkrementelle Synchronisierungshäufigkeit bestimmt die Häufigkeit der Tabellensynchronisierung. Wenn der von Ihnen angegebene Zeitplan häufiger ist als die tatsächlich für das Synchronisieren der Tabelle erforderliche Zeit, folgt das System nicht dem von Ihnen angegebenen Zeitplan. Dies ist der Fall, weil inkrementelle Zyklen sequenziell ausgeführt werden müssen und sich nicht überlappen können.
Schemaentwicklung¶
Der Konnektor unterstützt mehrere gängige Schemaänderungen in der BigQuery-Quelltabelle. Die folgenden Schemaänderungen werden erkannt und an die Snowflake-Zieltabelle weitergegeben:
- Spalten hinzufügen:
Neue, in BigQuery hinzugefügte Spalten werden automatisch der entsprechenden Snowflake-Tabelle hinzugefügt.
- Spaltenlöschung (vorläufiges Löschen):
Wenn eine Spalte in BigQuery gelöscht wird, führt der Konnektor in Snowflake ein „vorläufiges Löschen“ aus. Die Spalte wird nicht aus der Zieltabelle gelöscht. Stattdessen wird sie umbenannt, indem der
_SNOWFLAKE_DELETED-Suffix am Ende des Spaltennamens angefügt wird. Beispiel:my_columnwird zumy_column_SNOWFLAKE_DELETED. Dadurch werden Verlaufsdaten in Snowflake bewahrt.- Spalten umbenennen:
Eine Spaltenumbenennung besteht aus zwei Schritten:
Die ursprüngliche Spalte wird „vorläufig gelöscht“ und mit dem
_SNOWFLAKE_DELETED-Suffix umbenannt.Der Snowflake-Tabelle wird eine neue Spalte mit dem neuen Namen hinzugefügt.
- Änderung des Primärschlüssels:
Das Hinzufügen, Entfernen und Ändern von Primärschlüsseln wird unterstützt.
- Änderungen der Datentypen:
Es werden nur Änderungen toleriert, die den bestehenden Typ erweitern. Jede Änderung, die den Typ einer Spalte eingegrenzt oder in einen inkompatiblen Typ konvertiert, wird nicht unterstützt und führt dazu, dass die Replikation für diese Tabelle fehlschlägt.
Nächste Schritte¶
Weitere Informationen zum Einrichten des Konnektors finden Sie unter folgenden Themen: