Datenverarbeitungsprojekt Teil 2 - JSON in Snowflake einfügen und analysieren
Inhaltsverzeichnis
- Einleitung
- Extrahieren von Daten aus Predictit
- Einrichten von Snowflake
- Grundlegende JSON-Dateibereinigung
- Erstellen einer Rohdatentabelle
- Automatisieren des Ladevorgangs
- Erstellen von Markt- und Vertragsdauertabellen
- Filtern und Einfügen neuer Daten
- Erstellen von Abhängigkeiten und Wiederverwenden von Aufgaben
- Fazit
Die Einführung
Willkommen zurück zu einem weiteren Video mit mir, Ben Rogan, auch bekannt als der Seattle-Datentyp. Heute werden wir endlich den zweiten Teil meines Data Engineering Projekts angehen. In dem vorherigen Video haben wir Daten aus Predictit extrahiert, die die verschiedenen Märkte zeigen, die sie eingerichtet haben. Jetzt werden wir diese Daten in Snowflake einfügen und eine grundlegende JSON-Dateibereinigung durchführen. Im letzten Video werden wir dann tatsächlich etwas mit diesen Daten machen. Dieses Video wird sich hauptsächlich auf den Vorbereitungsschritt konzentrieren, aber wenn Sie das vorherige Video noch nicht gesehen haben, empfehle ich Ihnen, es sich anzusehen. Dort haben wir eine Managed Workflows for Apache Airflow auf AWS eingerichtet, um die Daten abzurufen und sie in S3 einzufügen. Aber jetzt tauchen wir ein.
Extrahieren von Daten aus Predictit
Zu Beginn ist es wichtig, sich daran zu erinnern, was wir eigentlich vorhaben. Die Daten, die wir abgerufen haben, enthalten zwei verschiedene Entitäten: Märkte und Verträge. Märkte sind im Wesentlichen die übergeordneten Informationen. Jeder Markt hat mehrere Verträge, und so möchten wir diese Informationen aufschlüsseln. Ein Markt wird eine Tabelle sein und die Verträge werden eine andere sein. Für die Vertragsinformationen werden wir sie im Laufe der Zeit verfolgen, um die Änderungen, die sich von Tag zu Tag ergeben, zu sehen, denn das ist wirklich der interessante Teil. Um das zu tun, werden wir wiederum zwei Tabellen erstellen: eine Markt-Tabelle und eine Vertrags-Tabelle. Und dann werden wir es im Laufe der Zeit analysieren. Dafür werden wir mehrere Snowflake-Objekte verwenden, die für Snowflake einzigartig sind. Zum Beispiel werden wir einen Stage verwenden, Tasks und Integrations oder Storage Integrations nutzen.
Grundlegende JSON-Dateibereinigung
Bevor wir uns zu sehr mit dem eigentlichen Code beschäftigen, sollten wir uns daran erinnern, was wir hier tun wollen. Wenn Sie sich erinnern, haben wir eine große, unstrukturierte Menge an Json-Daten von Predictit abgerufen. Jede Datei enthält viele Informationen, und wir müssen diese Informationen analysieren und in Tabellen umwandeln. Dafür verwenden wir Snowflake-Objekte wie stage
, tasks
und Integrations
. Snowflake Stage ermöglicht es uns, Datenquellen über unsere Storage Integration zu referenzieren. Die Storage Integration hilft uns, die Sicherheitsaspekte beim Umgang mit den Daten zu gewährleisten. Wir haben bereits eine Bühne und eine Speicherintegration erstellt, um die Daten abzurufen. Wir haben auch eine Tabelle erstellt, um die rohen Predictit-Daten zu speichern. Nun werden wir die Daten von der Stage-Tabelle in die Rohdatentabelle laden und die Json-Dateien parsen. So können wir die Daten analysieren und weitere Aufgaben automatisieren.
Erstellen einer Rohdatentabelle
Um die Daten von der Stage-Tabelle in die Rohdatentabelle zu laden, verwenden wir den Befehl COPY INTO
. Dieser Befehl lädt die Dateien von der Stage-Tabelle in die Rohdatentabelle und überprüft dabei, ob bereits geladene Dateien vorhanden sind. Snowflake bietet eine großartige Funktion, um doppelte Dateiladungen zu verhindern. Nachdem die Daten geladen wurden, können wir die Daten in der Rohdatentabelle abfragen und überprüfen, ob alles erfolgreich geladen wurde. Wenn Sie möchten, können Sie dies auch automatisieren, indem Sie eine Aufgabe erstellen und diese regelmäßig ausführen lassen. Snowflake Tasks sind einfach zu erstellen und bieten eine gute Möglichkeit, wiederholte Aufgaben zu automatisieren.
Automatisieren des Ladevorgangs
Die Automatisierung des Ladevorgangs ist einfach mit Snowflake Tasks. Snowflake Tasks können so konfiguriert werden, dass sie regelmäßig ausgeführt werden, indem man die Zeit und Häufigkeit angibt. Für unsere Zwecke werden wir eine Task erstellen, die täglich um 2 Uhr morgens läuft, um die Daten von der Stage-Tabelle in die Rohdatentabelle zu laden. Wir können auch eine Abhängigkeit zwischen Aufgaben erstellen, um sicherzustellen, dass die Daten nur dann geladen werden, wenn die vorherige Aufgabe abgeschlossen ist.
Erstellen von Markt- und Vertragsdauertabellen
Um die Daten effektiv zu analysieren, erstellen wir zwei Tabellen: eine Markt-Tabelle und eine Vertrags-Tabelle. In der Markt-Tabelle werden die Informationen über die Märkte gespeichert, während die Vertrags-Tabelle die Verträge enthält, die den Märkten zugeordnet sind. Beide Tabellen werden in einem bestimmten Format erstellt, das die Daten am besten repräsentiert. Wir verwenden SQL-Abfragen, um die benötigten Daten aus der Rohdatentabelle abzurufen und in die entsprechenden Tabellen einzufügen. Danach können wir diese Tabellen verwenden, um weitere Analysen durchzuführen.
Filtern und Einfügen neuer Daten
Um effizient mit den Daten umzugehen, filtern wir nur die relevanten Informationen aus den Rohdaten und fügen sie in die entsprechenden Tabellen ein. Wir verwenden SQL-Abfragen, um die Daten zu filtern und die Eindeutigkeit der Daten sicherzustellen. Die Daten, die bereits in den Tabellen vorhanden sind, werden beim Einfügen neuer Daten berücksichtigt. Dies ermöglicht es uns, nur neue oder aktualisierte Daten zu erfassen und vorhandene Daten nicht zu duplizieren.
Erstellen von Abhängigkeiten und Wiederverwenden von Aufgaben
Snowflake ermöglicht es uns, Abhängigkeiten zwischen den Tasks zu erstellen und Aufgaben wiederzuverwenden. Dies kann nützlich sein, wenn wir komplexe Workflows oder Abläufe haben, bei denen bestimmte Aufgaben nur dann ausgeführt werden, wenn andere Aufgaben abgeschlossen sind. Wir können auch Aufgaben anhalten, fortsetzen oder neu starten, je nach Bedarf. Dies ermöglicht uns, flexibel und effizient mit den Aufgaben umzugehen und sicherzustellen, dass der Datenfluss reibungslos verläuft.
Fazit
In diesem Artikel haben wir die Grundlagen der Datenextraktion aus Predictit und der Verwendung von Snowflake für die Datenverarbeitung und -analyse behandelt. Wir haben gelernt, wie man Daten von einer Stage-Tabelle in eine Rohdatentabelle lädt, wie man Aufgaben automatisiert und wie man Markt- und Vertragsdauertabellen erstellt. Snowflake bietet eine leistungsstarke Plattform für die Datenverarbeitung und -analyse und ermöglicht es uns, komplexe Workflows effizient zu verwalten. Mit den hier vorgestellten Konzepten können wir die Daten für weitere Analysen und Dashboards verwenden, um Einblicke und Informationen zu gewinnen.