Einführung in Datenpipelines¶
Datenpipelines automatisieren viele der manuellen Schritte bei der Transformation und Optimierung des kontinuierlichen Ladens von Daten. Häufig werden die „Rohdaten“ zur Zwischenspeicherung zunächst vorübergehend in eine Staging-Tabelle geladen und dann mithilfe einer Reihe von SQL-Anweisungen transformiert, bevor sie in die Zielberichtstabellen eingefügt werden. Der effizienteste Workflow für diesen Prozess besteht darin, nur neue oder geänderte Daten zu transformieren.
Unter diesem Thema:
Funktionen, die in kontinuierlichen Daten-Pipelines enthalten sind¶
Snowflake bietet die folgenden Funktionen, um kontinuierliche Daten-Pipelines zu ermöglichen:
- Kontinuierliches Laden von Daten
Zu den Optionen für das kontinuierliche Laden von Daten gehören:
Datenintegrationstools von Drittanbietern
- Nachverfolgung von Änderungsdaten
Ein Stream-Objekt zeichnet das Delta der Change Data Capture (CDC)-Informationen für eine Tabelle (z. B. eine Stagingtabelle) auf, einschließlich Einfügungen und anderer Data Manipulation Language (DML)-Änderungen. Ein Stream ermöglicht das Abfragen und Verbrauchen einer Reihe von Änderungen an einer Tabelle auf Zeilenebene zwischen zwei Transaktionszeitpunkten.
In einer kontinuierlichen Daten-Pipeline wird in Tabellen-Streams aufgezeichnet, wann Staging-Tabellen und alle nachgelagerten Tabellen mit Daten aus Geschäftsanwendungen gefüllt werden, wobei das kontinuierliche Laden von Daten verwendet wird, und wann sie mit SQL-Anweisungen weiter verarbeitet werden können.
Weitere Informationen dazu finden Sie unter Änderungsnachverfolgung mit Tabellenstreams.
- Wiederkehrende Aufgaben
Ein Aufgaben-Objekt definiert einen wiederkehrenden Zeitplan für die Ausführung einer SQL-Anweisung, einschließlich Anweisungen, die gespeicherte Prozeduren aufrufen. Aufgaben können zur sukzessiven Ausführung verkettet werden, um eine komplexere periodische Verarbeitung zu erlauben.
Aufgaben können optional Tabellen-Streams verwenden, um eine bequeme Möglichkeit zum kontinuierlichen Verarbeiten neuer oder geänderter Daten zu bieten. Eine Aufgabe kann neue oder geänderte Zeilen, die ein Stream ausgibt, transformieren. Bei jeder geplanten Ausführung einer Aufgabe wird überprüft, ob ein Stream Änderungsdaten für eine Tabelle enthält (mithilfe von SYSTEM$STREAM_HAS_DATA), und ob die Änderungsdaten entweder verbraucht werden oder der aktuelle Lauf übersprungen wird, wenn keine Änderungsdaten vorhanden sind.
Benutzer können eine einfache baumartige Aufgabenstruktur definieren, die aufeinanderfolgende SQL-Anweisungen ausführt, um Daten zu verarbeiten und in verschiedene Zieltabellen zu verschieben.
Weitere Informationen dazu finden Sie unter Ausführen von SQL-Anweisungen für einen Zeitplan mithilfe von Aufgaben.
Workflow¶
Die folgende Abbildung veranschaulicht den allgemeinen Ablauf einer kontinuierlichen Datenpipeline unter Verwendung der Snowflake-Funktionalität:
Eine der folgenden Snowflake-Funktionen oder das Datenintegrationstool eines Drittanbieters (nicht gezeigt) lädt kontinuierlich Daten in eine Stagingtabelle:
Snowpipe
Snowpipe lädt kontinuierlich Microbatches von Daten aus einem externen Stagingbereich (Amazon S3, Google Cloud Storage oder Microsoft Azure) in eine Stagingtabelle.
Snowflake-Konnektor für Kafka
Der Kafka-Konnektor lädt kontinuierlich Datensätze von einem oder mehreren Apache Kafka-Themen in einen internen (Snowflake) Stagingbereich und anschließend mithilfe von Snowpipe in eine Stagingtabelle.
Ein oder mehrere Streamobjekte erfassen Änderungsdaten und stellen diese für Abfragen zur Verfügung.
Eine oder mehrere Aufgaben führen SQL-Anweisungen aus (die zum Beispiel gespeicherte Prozeduren aufrufen), um die Änderungsdaten zu transformieren und die optimierten Datasets zur Analyse in Zieltabellen zu verschieben. Bei jeder Ausführung dieses Transformationsprozesses werden die Änderungsdaten im Stream ausgewählt, um DML-Operationen für die Zieltabellen auszuführen. Die Änderungsdaten werden dann verwendet, wenn die Transaktion festgeschrieben wird.