Data Science Engineering · SQL, Python, Pipelines

Data Engineering: Vertrag vor Modell

Datenkörnung, Zeitbezug, Verträge, Tests und Batch/API-Trade-offs als Teil der Modellqualität behandeln.

Öffentlich belegtZuletzt fachlich geprüft: 2026-09-02

Das Modell beginnt an der Datengrenze

Ein produktiver ML-Workflow ist mehr als Modellcode. Datenabhängigkeiten, Konfiguration, Glue Code, unbekannte Konsumenten und Feedback Loops können stille technische Schulden erzeugen.[1] Deshalb definiere ich vor SQL oder Features einen Datenvertrag: Einheit, Schlüssel, Ereigniszeit, Verfügbarkeit zum Prognosezeitpunkt, Typ, zulässiger Bereich, Missingness-Semantik, Eigentümer, Retention und Änderungsprozess.

GrenzePrüfbare FrageTypischer Fehler
KörnungIst eine Zeile Person, Dokument, Vorgang oder Ereignis?Many-to-many-Join vervielfacht Labels.
ZeitWann entstand das Feld, wann war es verfügbar?Späterer Prozessstatus leakt in Training.
SemantikHeißt NULL unbekannt, nicht anwendbar oder noch nicht eingetroffen?Imputation kaschiert Prozessänderung.
VertragWelche Schema-, Bereichs- und Verteilungsgrenzen blockieren?Spaltenänderung läuft still durch.

SQL-Entwurf: erst Körnung, dann Join

WITH base AS (
SELECT entity_id, event_time, label
FROM outcomes
WHERE event_time < :cutoff
), features AS (
SELECT entity_id, MAX(value) AS value_before_cutoff
FROM events
WHERE observed_at < :cutoff
GROUP BY entity_id
)
SELECT b.entity_id, b.label, f.value_before_cutoff
FROM base b LEFT JOIN features f USING (entity_id);

Geprüfte Join-Rechnung: Hat base 100 eindeutige Schlüssel und der Join 107 Zeilen, ist die Multiplikationsrate 107/100=1,07. Das ist kein akzeptabler Zufall, sondern ein zu erklärender Grain-Verstoß. Tests prüfen vor und nach dem Join Eindeutigkeit, Zeilenzahl, Nullanteile, Zeitgrenzen und Labelrate.

Reproduzierbare Pipeline

  1. Ingest: unveränderliche Rohreferenz, Schema und Herkunft erfassen.
  2. Validate: Vertrag, Keys, Zeit, Wertebereiche und sensible Felder prüfen.
  3. Transform: idempotente, versionierte Logik; gleiche Definition für Training und Inferenz.
  4. Split: Einheit und Zeit vor lernenden Transformationen trennen.
  5. Train/Evaluate: Code-, Daten-, Konfigurations- und Umgebungsstand protokollieren.
  6. Publish: Artefakt plus Input-/Output-Schema und Rückfallversion.

Reproduzierbarkeit heißt nicht, dass ein Resultat wahr ist: Ein deterministisch reproduzierbarer Leakage-Fehler bleibt Leakage.

Batch

  • Gut für planbare große Mengen und tolerierbare Verzögerung.
  • Einfacher zu wiederholen, auditieren und kapazitiv begrenzen.
  • Risiko: veraltete Scores, lange Fehlerwirkung bis zum nächsten Lauf.

API / Echtzeit

  • Nur wenn die Entscheidung frische Inputs und geringe Latenz benötigt.
  • SLOs für P95/P99, Timeout, Last, Idempotenz und Authentisierung.
  • Fallback bei Abhängigkeit, Schemafehler oder Unsicherheit explizit.

Interview-Fallen

  • „Die Query läuft“ mit korrekter fachlicher Körnung verwechseln.
  • Notebook-Reihenfolge statt deklarativer, testbarer Pipeline.
  • Online-Architektur wählen, obwohl täglicher Batch die Entscheidung rechtzeitig versorgt.
  • PII oder Gesundheitsdaten auf Vorrat als potenzielles Feature übernehmen.

60-Sekunden-Antwort

„Ich starte mit Entscheidung, Einheit und Prognosezeit. Dann dokumentiere ich je Feld Herkunft, Verfügbarkeit und Missingness-Semantik. Joins sichere ich über Keys und Grain-Tests, Transformationen werden idempotent und versioniert. Batch oder API entscheide ich nach Aktualität, Volumen, Latenz, Kosten und Fallback – nicht nach Modernität.“

Datenvertrag im Lab prüfen →

Harter Vertrag ≠ weiches Warnsignal

Ein gebrochener Key, eine Zukunftszeit oder vervielfachte Grain widerlegt den Datenvertrag und stoppt die Pipeline. Ein PSI- oder Anomaliesignal ist dagegen zuerst Diagnose: Ohne Owner, Ursache, Kontext und vorab bestimmte Reaktion darf es weder Pager noch automatisches Retraining auslösen. Google SRE trennt Monitoringzwecke und warnt vor unspezifischen Seitenalarmen mit geringer Signalqualität.[2]

Widerlegungsprobe: Erhöhe durch einen Many-to-many-Join 100 erwartete Schlüssel auf 107 Zeilen. Der Vertrag muss vor Driftberechnung scheitern; ein Modellneutraining wäre die falsche Reaktion.

Belege auf dieser Seite

  1. Hidden Technical Debt in Machine Learning Systems · geprüft 2026-09-02
  2. Monitoring Distributed Systems · geprüft 2026-09-02