Sofortantwort
Data Lineage einfach erklärt
Nachverfolgung von Datenherkunft, Transformationen und Verwendung.
- Kurz gesagt
- Dokumentiert Datenherkunft (woher?)
- Typischer Einsatz
- Debugging, Sicherheit, Impact Analysis
- Wichtig zu wissen
- Zeigt Abhängigkeiten (wer nutzt die Daten?)
Data Lineage im Überblick
Data Lineage dokumentiert den Weg deiner Daten: Woher kommen sie, was passiert mit ihnen, und wo landen sie am Ende. Wie ein GPS-Tracker für Daten.
Beispiel:
Quelle Transformation Ziel
───────────────────────────────────────────────────────────
CRM-System ──┐
├──→ ETL-Job ──→ Data Warehouse ──→ ML-Modell
Web-Logs ────┘ │ │
│ └──→ Dashboard
│
└──→ Aggregation ──→ Report
Was wird getrackt?
| Aspekt | Frage | Beispiel |
|---|---|---|
| Herkunft | Woher? | CRM-System, API, CSV |
| Transformation | Was wurde gemacht? | JOIN, Filter, Aggregation |
| Abhängigkeiten | Wer nutzt es? | Dashboard, ML-Modell |
| Zeitstempel | Wann? | Letzte Aktualisierung |
| Owner | Wer ist verantwortlich? | Team Data Engineering |
Technisch betrachtet
dbt Lineage
-- models/staging/stg_orders.sql
SELECT
id,
customer_id,
order_date,
total
FROM {{ source('raw', 'orders') }}
WHERE order_date >= '{{ start_date }}'
-- models/marts/customer_metrics.sql
SELECT
customer_id,
COUNT(*) as order_count,
SUM(total) as lifetime_value
FROM {{ ref('stg_orders') }}
GROUP BY customer_id
Transformations-Tools können daraus Lineage ableiten:
raw.orders → stg_orders → customer_metrics
OpenLineage Event
{
"eventType": "COMPLETE",
"eventTime": "<event-timestamp>",
"run": {
"runId": "abc-123"
},
"job": {
"namespace": "etl",
"name": "transform_orders"
},
"inputs": [
{
"namespace": "postgres",
"name": "raw.orders"
}
],
"outputs": [
{
"namespace": "warehouse",
"name": "staging.orders"
}
]
}
Airflow mit OpenLineage
from airflow import DAG
from airflow.providers.openlineage.plugins.adapter import OpenLineageAdapter
with DAG("etl_pipeline") as dag:
extract = PostgresOperator(
task_id="extract_orders",
sql="SELECT * FROM orders"
)
transform = PythonOperator(
task_id="transform",
python_callable=transform_data
)
load = BigQueryOperator(
task_id="load_to_bq",
destination_table="warehouse.orders"
)
extract >> transform >> load
# Lineage-Metadaten können erfassen:
# source.orders → transform → warehouse.orders
Impact Analysis
def get_downstream_dependencies(table_name):
"""Was bricht, wenn ich diese Tabelle ändere?"""
lineage = get_lineage_graph()
downstream = []
queue = [table_name]
while queue:
current = queue.pop(0)
for dependent in lineage.get_dependents(current):
downstream.append(dependent)
queue.append(dependent.name)
return downstream
# Beispiel
deps = get_downstream_dependencies("raw.orders")
# → abhängige Tabellen, Dashboards oder Modelle
Lineage für ML
Training Data Lineage:
──────────────────────
raw.customers ──┐
├──→ feature_engineering ──→ training_data ──→ model_version
raw.transactions┘ │
└──→ feature_store
Wenn Quelldaten sich ändern:
→ Feature Engineering prüfen
→ Training Data neu validieren
→ Modellqualität und Retraining-Bedarf bewertenSchritt für Schritt
Den Weg von Daten sichtbar machen
Lineage verknüpft Quellen, Verarbeitungsschritte und Verbraucher. Dadurch können Teams Fehler, Änderungen und Datenverwendung gezielt verstehen.
Quellen erfassen
Ursprung
Datenbestände werden mit System, Owner, Zeit und relevanten Eigenschaften als Startpunkte dokumentiert.
Quelle → DatasetTransformationen protokollieren
Verarbeitung
Pipelines, Abfragen und Modelle melden, wie Daten gefiltert, verbunden, aggregiert oder angereichert wurden.
Input → Job → OutputAbhängigkeiten verknüpfen
Graph
Katalog und Lineage zeigen, welche Berichte, Features oder Modelle von einem Datenbestand abhängen.
Dataset → VerbraucherÄnderungen und Fehler analysieren
Impact
Bei einem Problem wird der Pfad rückwärts zur Ursache oder vorwärts zu betroffenen Produkten verfolgt.
Änderung → Folgen + Maßnahmen
Konkretes Beispiel
Beispiel: Ein fehlerhafter Umsatzwert
Ein Dashboard zeigt plötzlich ungewöhnlich niedrige Umsätze.
Manuelle Spurensuche
Teams durchsuchen Tabellen und Skripte, ohne zu wissen, welche Transformation zuletzt geändert wurde.
Sichtbare Lineage
Die Datenlinie zeigt eine geänderte Filterregel in einer Pipeline und alle betroffenen Berichte. Das Team kann Ursache und Auswirkung gezielt korrigieren.
Lineage beschleunigt Fehlerbehebung und Veränderung, weil Datenabhängigkeiten nicht nur in einzelnen Köpfen oder Dokumenten stehen.
Einordnung
Vorteile und Grenzen
Das spricht dafür
- Macht Herkunft und Transformationen von Daten nachvollziehbar.
- Unterstützt schnelle Ursachen- und Auswirkungsanalysen.
- Erleichtert Auditierbarkeit, Reproduzierbarkeit und sichere Änderungen.
- Verbindet technische Pipelines mit Katalog und Ownership.
Das solltest du beachten
- Automatische Erfassung deckt nicht immer manuelle Schritte ab.
- Unvollständige Metadaten können falsche Sicherheit erzeugen.
- Komplexe Datenlandschaften brauchen klare Standards und Pflege.
- Lineage erklärt den Datenweg, nicht automatisch die fachliche Bedeutung.
Vertiefung · für FortgeschritteneEin Datenfluss als nachvollziehbarer Graph
Knoten stehen für Daten oder Jobs, Kanten für nachweisbare Abhängigkeiten.
Flüsse verfolgen