Wie wird Column-Level Lineage technisch in einem komplexen dbt-Projekt erfasst und validiert?

Die Erfassung von Column-Level Lineage in dbt erfolgt primär über die Analyse der manifest.json und der catalog.json in Kombination mit einem SQL-Parser. Da dbt Core nativ nur Table-Level Lineage bereitstellt, setzen wir für die spaltenbasierte Verfolgung auf die Extraktion des Abstract Syntax Tree (AST) aus den kompilierten SQL-Dateien.

Der technische Prozess gliedert sich in drei Schritte:

  1. Parsing: Ein SQL-Parser (beispielsweise SQLGlot) analysiert die SELECT-Statements und identifiziert die Herkunft jeder Spalte innerhalb der Transformation.
  2. Mapping: Die Verknüpfung der Spalten erfolgt über die ref()- und source()-Funktionen, welche in der manifest.json als Abhängigkeiten zwischen den Modellen hinterlegt sind.
  3. Graph-Konstruktion: Die extrahierten Abhängigkeiten werden in einen gerichteten azyklischen Graphen (DAG) überführt, der den Fluss von der Source-Spalte bis zum finalen Mart abbildet.
MethodeTechnischer AnsatzDetailgradImplementierungsaufwand
dbt CloudNative IntegrationHochGering
OpenLineageAPI-basiertes TrackingSehr HochMittel
Custom ParserAST-Analyse via PythonIndividuellHoch

Die Validierung der Lineage erfolgt durch den Abgleich der tatsächlichen SQL-Logik mit den definierten dbt-Tests. Wir implementieren Schema-Tests und Singular-Tests, um sicherzustellen, dass Spaltennamen und Datentypen über die gesamte Kette konsistent bleiben. In komplexen Projekten integrieren wir diese Prüfungen in die CI/CD-Pipeline, wobei automatisierte Checks erkennen, ob Änderungen an Upstream-Spalten Downstream-Modelle beschädigen. Solche Architektur-Entscheidungen sind Teil unserer IT-Consulting & Digitale Strategie, um Datenintegrität skalierbar zu gewährleisten.

Die abschließende Validierung wird durch den Vergleich der catalog.json (Ist-Zustand der Datenbank) mit der manifest.json (Soll-Zustand des Codes) vervollständigt. Differenzen zwischen den tatsächlich vorhandenen Spalten und den im Code referenzierten Spalten lösen automatisierte Alerts aus.

Verzichten Sie auf manuelle Dokumentationslisten für Spaltenabhängigkeiten; setzen Sie stattdessen auf eine automatisierte AST-basierte Extraktion, da nur so die Synchronität zwischen Code und Lineage in dynamischen Projekten garantiert werden kann.

Sergej Wiens

Sergej Wiens

Gründer & Software Architekt