How to dbt: Ein kompakter Einstieg in moderne Datentransformation

Autor:in: Matthias Albert
Lesezeit: 4 Minuten
PortrÀt eines Mannes mit lockigem, schulterlangem Haar und Bart, vor einem unscharfen, hellen Hintergrund.

Was ist dbt und warum sollte man sich damit beschÀftigen?

dbt (data build tool) ist ein Open Source Framework fĂŒr Transformationen, mit dem sich Daten im Data Warehouse mithilfe modular geschriebener SQL Anweisungen transformieren lassen. Dank seiner schlanken, dateibasierten Architektur bringt es Methoden der Softwareentwicklung in Analyse Workflows ein.

Alles, was zu den Daten gehört außer dem eigentlichen Dateninhalt, liegt in versionierten und modularen SQL und YAML Dateien. Da es sich ausschließlich um reinen Text handelt, eignet sich dieses Format von Natur aus fĂŒr Versionskontrolle, zum Beispiel mit GitHub. Die Zusammenarbeit im Projekt wird dadurch einfacher und Änderungen bleiben transparent. Pull Requests, Code Reviews, Branching, CI/CD und Tests, also all die Praktiken, die Softwareentwicklung verlĂ€sslich gemacht haben, lassen sich so auch auf Datenpipelines anwenden und bringen Struktur in komplexe Datenlandschaften.

Der Datenfluss in dbt – von Rohdaten zu fachlich nutzbaren Daten

Ein typisches Konzept im Data Engineering ist ein Drei-Schichten-Modell, das den Verarbeitungsgrad von Daten beschreibt. Es reicht von Rohdaten ĂŒber Zwischenschritte bis hin zu Daten, die fachlich nutzbar sind und in der Regel bereits angereichert und aggregiert wurden. FĂŒr dieses dreiteilige Konzept gibt es verschiedene Bezeichnungen. Ein bekanntes Beispiel ist die Medallion Architektur, bei der die Schichten Bronze, Silber und Gold heißen.

Medalliondbt ÄquivalentBeschreibung
BronzeSources (_sources.yml)Rohdaten Tabellen, unverÀndert aus dem Quellsystem
Silverstaging/ + intermediate/Bereinigt, dedupliziert, typisiert und standardisiert
Goldmarts/Analysefertige, aggregierte Daten

Auf diese Weise werden Daten an verschiedenen Stellen der Pipeline materialisiert. Das erleichtert Wartung und Fehlersuche und schafft Nachvollziehbarkeit. Auch in dbt fließen die Daten von roh zu verarbeitet und durchlaufen dabei mehrere Transformationsschritte.

Im DAG von dbt, also im gerichteten azyklischen Graphen, lĂ€sst sich visuell nachvollziehen, wie Daten durch die einzelnen Modelle fließen und von welchen vorgelagerten Modellen sie abhĂ€ngen. Wer bereits mit Orchestrierungstools wie Airflow gearbeitet hat, wird dieses Konzept wiedererkennen:

Ein minimalistisches dbt Projekt

In einem dbt Projekt werden Daten transformiert, wĂ€hrend sie durch verschiedene Modelle fließen. Wenn in dbt alles dateibasiert ist, welche Dateien braucht ein dbt Projekt mindestens, um zu funktionieren?

GrundsĂ€tzlich enthalten SQL oder Python Dateien die Modelle, zum Beispiel SELECT Statements oder pandas DataFrames. Konfiguration und Dokumentation liegen in .yml Dateien. Unten ist ein minimales, aber funktionsfĂ€higes Setup zu sehen. Besonders wichtig ist die unverzichtbare Datei dbt_project.yml, die die zentrale Projektkonfiguration enthĂ€lt:

Tipp: Wenn dein dbt Projekt Teil eines grĂ¶ĂŸeren Repositories ist, zum Beispiel neben Ingestion Skripten oder Orchestrierungscode, empfiehlt es sich, es in einem Unterverzeichnis wie transform/ oder dbt/ abzulegen. So bleibt die Struktur ĂŒbersichtlich.

Benennungskonventionen in dbt

Bei dbt dreht sich alles um ModularitÀt. Transformationen werden einmal definiert und im weiteren Verlauf des Datenflusses wiederverwendet. Es gibt einige hilfreiche Konventionen, mit denen sich bereits am Dateinamen erkennen lÀsst, worum es sich handelt. Das hilft auch dabei, sich in verschachtelten Repository Strukturen besser zurechtzufinden.

PrÀfixSchichtBeispiel
stg_Stagingstg_saleslt__customers.sql
int_Intermediateint_customers_enriched.sql
fct_Marts (facts)fct_daily_orders.sql
dim_Marts (dimensions)dim_customers.sql

Außerdem trennt der doppelte Unterstrich __ das Quellsystem vom Namen der EntitĂ€t. So werden Mehrdeutigkeiten vermieden. stg_google_analytics__campaigns ist eindeutig die Tabelle campaigns aus google_analytics und nicht analytics_campaigns aus google. Dateien mit einem fĂŒhrenden Unterstrich wie _sources.yml sind YAML Konfigurationsdateien und keine SQL Modelle. Sie erscheinen daher nicht im DAG.

Eine minimalistische dbt_project.yml Datei

dbt project.yml Snippet

Was die einzelnen Abschnitte bedeuten:

SchlĂŒsselBedeutung
nameProjektkennung, muss mit dem Eintrag unter models: ĂŒbereinstimmen
profileVerweist auf die Verbindungsstellen in ~/.dbt/profiles.yml
model-pathsGibt an, wo dbt nach .sql Modellen sucht
+materializedview= schnellere Builds;table = schnellere Abfragen

Warum Staging gleich View ist, Marts aber als Table angelegt werden

  • Staging Modelle sind Bausteine und werden in der Regel nicht direkt abgefragt. Views sparen daher Speicherplatz.
  • Marts werden von Analystinnen und Analysten sowie von Dashboards abgefragt. Tabellen bieten hier meist die bessere Performance.

Und das ist im Grunde schon alles. Damit hast du alles, was du brauchst, um dbt build auszufĂŒhren und deinen ersten DAG zum Leben zu erwecken. Im nĂ€chsten Blog geht es darum, wie sich Tests, Dokumentation und Scheduling ergĂ€nzen lassen, damit dieses Setup produktionsreif wird.

Bereit fĂŒr moderne Datenprozesse?

Ob wachsende Anforderungen, komplexe DatenflĂŒsse oder der Wunsch nach mehr Transparenz und Wiederverwendbarkeit – Wir unterstĂŒtzen Euch dabei, dbt so einzusetzen, dass daraus ein tragfĂ€higes Fundament fĂŒr moderne und skalierbare Datenprozesse entsteht. Lasst uns darĂŒber sprechen, wie wir Euch bei Eurem dbt Vorhaben unterstĂŒtzen können.