Business Intelligence/18. Juni 2024 -Aktualisiert am 18. Juni 2024/4 Min. Lesezeit

Dataform: Executions & Schedules für die automatisierte Aktualisierung von Tabellen und Daten

In den vorherigen Blogartikeln haben wir schon Dataform als Bestandteil in Google BigQuery beleuchtet sowie erste Beispiele gezeigt, wie man mit Dataform eine einfache View erstellen kann. In diesem Artikel werden wir uns auf zwei weitere wichtige Aspekte von Dataform konzentrieren: Executions und Releases.

Recap: Was ist Dataform?

Dataform ist ein Tool, das die Entwicklung, Verwaltung und Überwachung von Daten-Pipelines vereinfacht. Es integriert sich nahtlos mit Google BigQuery und ermöglicht es Dateningenieuren, ihre SQL-basierten Transformationsprozesse effizient zu verwalten.

Executions in Dataform

Executions beziehen sich auf die Ausführung von Dataform-Pipelines. Dies beinhaltet die Verarbeitung von SQL-Skripten und das Laden der Ergebnisse in BigQuery-Tabellen.

Schritte zur Durchführung einer Execution:
  1. Erstellung der passenden .sqlx-Dateien: Beispielsweise können neben der schon gezeigten View auch inkrementelle Tabellen angelegt werden, die abhängig von den zu Grunde liegenden Daten nur mit den jeweils neuesten Daten des Vortages befüllt werden.
  2. Definieren der Dataform-Config: Die Dataform-Konfigurationsdatei enthält wichtige Informationen zu der Cloud Region und dem Schema unter dem die Tabellen angelegt werden. Hier werden auch Informationen zu dem etwaigen AssertionSchema hinterlegt (was das ist und wozu man das nutzt in einem kommenden Blogartikel).
  3. Ausführen der Pipeline: Pipelines können über die Dataform CLI oder das Web-Interface ausgeführt werden, um die neu angelegten Files in dem konfigurierten BigQuery Projekt auszuführen.
Beispiel für eine sqlx.-Datei:
1config {
2  type: "table",
3  schema: "my_dataset",
4  name: "my_table"
5}
6
7SELECT
8  user_id,
9  COUNT(*) AS visit_count
10FROM
11  `my_project.my_dataset.raw_visits`
12GROUP BY
13  user_id
javascript
Beispiel für eine dataform.json-Datei:
1{
2   "warehouse": "bigquery",
3   "defaultDatabase": "my_project",
4   "defaultLocation": "EU",
5   "defaultSchema": "dataform",
6   "assertionSchema": "dataform_assertions"
7}
json
Releases in Dataform

Releases beziehen sich auf den Prozess der Versionierung und Veröffentlichung von Dataform-Projekten. Dies ermöglicht eine kontrollierte Einführung neuer Features und Änderungen.

Schritte zur Durchführung eines Releases:

1. Versionierung: Git sollte verwendet werden, um Änderungen an dem Dataform-Projekt zu verwalten und zu versionieren. Dabei können einfach eigene Repositories in den Settings verbunden werden.

2. Erstellen einer Release-Tags: Tags oder Branches können in dem Git-Repository genutzt werden, um einen bestimmten Stand des Projekts zu kennzeichnen. Wir setzen häufig auf Branches, sodass es z.B. beim Push auf den Development oder Production Branch zu einem Release kommt.

3. Erstellen einer Release Configuration: Unter “Releases & Scheduling” können Releases basierend auf z.B. Branch Namen erstellt werden, die zu einem bestimmten Zeitpunkt ausgeführt werden. Hier eine Beispielkonfiguration in der wir auch die Projekt ID aus der dataform.json noch einmal überschreiben:

Screenshot einer Release Configuration in BigQuery Dataform

"Release Configuration in Dataform"

4. Erstellen einer oder mehrerer Workflow Configurations: Basierend auf der Release Configuration kann nun eine Workflow Configuration erstellt werden, die alle oder nur Teile der definierten Aktionen in dem verlinkten Dataform Projekt ausführen. Das ist besonders praktisch, wenn Daten in einem Teil von den Tabellen häufiger aktualisiert werden müssen. Bei der Konfiguration eines Workflows wird einfach die Release Konfiguration verlinkt sowie der ausführende Service Account. Es kann dann mit Hilfe eines Cron Schedules genau zeitlich definiert werden, wann der Workflow läuft und welches Set an Actions ausgeführt wird.

Vorteile von Releases & Workflows:

  • Nachverfolgbarkeit: Änderungen können leicht nachverfolgt und bei Bedarf zurückgesetzt werden. Durch die Schedules der Workflows ist auf einen Blick ersichtlich, wann welche Daten aktualisiert werden.
  • Stabilität: Neue Features können in einer kontrollierten Weise eingeführt werden, wodurch das Risiko von Fehlern minimiert wird. Dazu ist natürlich auch das richtige Setup in dem verlinkten Git-Repository nötig, sodass z.B. nicht jeder zu jeder Zeit auf den main Branch pushen kann, wenn dieser als Release Configuration hinterlegt ist.
  • Zusammenarbeit: Teams können effektiv zusammenarbeiten und ihre Änderungen nahtlos integrieren. Noch sauberer verläuft dieser Prozess, wenn zur Entwicklung ein gesondertes BigQuery Projekt genutzt wird, sodass auch nicht bei der Erstellung neuer .sqlx - Dateien über die Oberfläche versehentlich etwas in der Produktionsumgebung ausgeführt wird.

Fazit

Executions und Releases sind wesentliche Bestandteile des Dataform-Workflows in Google BigQuery. Durch die richtige Anwendung dieser Konzepte kann sichergestellt werden, dass Daten-Pipelines effizient, zuverlässig und skalierbar laufen.

Hilfreiche Links: