Teil 15. Gold-Layer: Geschäftsentitäten und Grain
Der Gold-Layer ist die Schicht der Datenprodukte. Hier sieht der weiter unten in der Kette stehende Konsument stabile Datamarts und keine Zwischenberechnungen. Deshalb beginnt Gold mit Grain und Kontrakt, nicht mit einem bequemen select.
Was eine Gold-Modell produktionsreif macht
Ein Gold-Modell ist produktionsreif, wenn:
- es einen explizit benannten Konsumenten hat;
- Grain dokumentiert und überprüft ist;
- Pflichtfelder mit dem Kontrakt verknüpft sind;
- die PII-Richtlinie angewendet ist;
- Prüffakten die zentralen Risiken abdecken;
- der Reviewer-Bericht Fakten von Annahmen trennt.
Für mart_customer_360 ist der Konsument die Kunden- und Portfolio-Analyse. Für mart_payment_risk_signals ist der Konsument das Monitoring der Risikosignale. Für mart_open_api_consents ist es die Kontrolle des Einwilligungszustands. Diese Konsumenten dürfen nicht zufällig denselben Grain erhalten.
Grain als Schutz
Grain beantwortet die Frage „Was bedeutet eine Zeile". Wenn sich die Antwort ändert, ist das keine Kosmetik. Es ist eine Änderung der Daten-API.
Beispiele:
- eine Zeile pro
customer_id; - eine Zeile pro
transaction_id; - eine Zeile pro
scope; - eine Zeile pro Tag und Kanal.
Wenn ein Mart customer_360 heißt, aber mehrere Zeilen pro Kunde enthält, täuscht der Name den Konsumenten.
Gold-Abnahmefakten
- der Grain-Primärschlüssel besteht den
not_null-Test; - der Grain-Primärschlüssel besteht den
unique-Test, wenn der Grain eine Zeile pro Schlüssel vorsieht; - Pflichtkennzahlen bestehen den
not_null-Test; - keine direkten PII;
- Kontraktfelder vorhanden sind;
- Lineage über den dbt-Graphen oder eine Reviewer-Notiz lesbar ist.
Qwen-Abfrage
Lies specs/models und models/marts.
Bestimme für jeden Datamart Grain, zentrale Prüffakten, PII-Richtlinie und Auswirkung
auf den Kontrakt. Finde Datamarts, deren Grain nicht durch einen Test oder eine manuelle Reviewer-Fakte belegt ist.
Ändere keine Dateien.
Minimale Ausgabe
Erstellen Sie ein Verzeichnis des Gold-Layers:
# Verzeichnis des Gold-Layers
## mart_customer_360
Konsument:
Granularität:
Pflichtfelder:
PII-Richtlinie:
Prüffakten:
Erläuterung für den Leser
Der Gold-Layer ist der Moment, in dem die Engineering-Arbeit zu einem öffentlichen Versprechen wird. Davor kann man über Zwischeneinheiten, Normalisierung und Aufbereitung sprechen. Im Gold-Layer taucht der Konsument auf: Analyst, Risiko-Team, Reporting, Einwilligungs-Monitoring. Deshalb kostet jede Unklarheit hier mehr. Wenn der Grain nicht dokumentiert ist, denkt sich der Konsument ihn selbst aus. Wenn die PII-Richtlinie nicht überprüft ist, kann eine überflüssige Spalte in den Report gelangen. Wenn Pflichtkennzahlen nicht durch Tests abgedeckt sind, wirkt der Datamart nur äußerlich produktionsreif.
Ein Gold-Modell muss eng gefasst sein. Das klingt seltsam, weil man den Datamart „reicher" machen möchte: Produkt, Kanal, Segment, letzte Operation, Risiko-Flag, Kredit-Stage hinzufügen. Doch jede Erweiterung ändert die Frage, die die Tabelle beantwortet. Customer 360 kann ein Kundenschnitt sein oder unbemerkt zum kunden-produktbezogenen Datamart werden. Der Name bleibt gleich, die Bedeutung nicht mehr.
Genau deshalb lohnt es sich, das öffentliche Versprechen in einer Zeile zu formulieren. Wenn sich diese Zeile nicht ohne Kommata und Ausnahmen formulieren lässt, ist das Gold-Modell zu breit. „Eine Zeile pro Kunde für die Portfolio-Analyse ohne direkte PII" ist ein guter Rahmen. „Ein nützlicher Kunden-Datamart mit Konten, Zahlungen, Risiken und allem, was gebraucht werden könnte" ist eine Einladung zum Drift.
Das Review des Gold-Layers muss strenger sein als das Review von Staging. In Staging kann man über technische Normalisierung diskutieren. In Gold muss man nach Konsument, Kontrakt, SLA, PII, Grain und Belegen fragen. Wenn der Reviewer nicht verstehen kann, wem der Datamart versprochen ist und wie er genutzt wird, ist das Modell noch kein Gold, selbst wenn es in models/marts/ liegt.
Praxis
Notieren Sie für jeden Datamart aus dem README ein öffentliches Versprechen in einer Zeile. Wenn das Versprechen keinen Konsumenten und keinen Grain enthält, ist der Datamart noch nicht reif, als Gold-Datenprodukt zu gelten.
Typischer Fehler
Jede Tabelle in models/marts/ als Gold-Layer zu bezeichnen. Gold ist kein Ordner. Es ist ein durch Spezifikation, Kontrakt und Prüfung verankertes Versprechen an den Konsumenten.
Kontrollfragen
- Warum ist Grain Teil des öffentlichen Kontrakts?
- Welche Tests werden für einen Mart auf Kundenebene benötigt?
- Wann kann ein Nullable-Feld trotzdem eine Breaking Change sein?