Zum Hauptinhalt springen

Data Contracts mit dbt

Wie nutzt du Data Contracts in einem dbt-Projekt?

Von Dr. Simon Harrer · · Video 2:24 · 7 Folien

Kurz gesagt

Halte eine Kopie des Schemas: den Data Contract. Die Data Contract CLI importiert den ersten Contract aus dem dbt-Manifest. Dann schreibt sie den Contract als Properties und Tests in das dbt-Projekt. In der CI stoppen ein zweiter Sync und ein Diff das Auseinanderlaufen.

Auf YouTube ansehen
Folie 1 von Entropy Explains Folge 10, Zwei Kopien des Schemas: Ein dbt-Projekt baut das orders-Modell, und andere Teams nutzen es.

Zwei Kopien des Schemas

Ein dbt-Projekt baut das orders-Modell, und andere Teams nutzen es. Die Properties-Datei beschreibt die Spalten, aber Data Consumers lesen dein Repository nicht. Wenn du einen Data Contract von Hand schreibst, hast du zwei Kopien des Schemas. Sie laufen mit der Zeit auseinander.

Folie 2 von Entropy Explains Folge 10, Mit dem Manifest anfangen: Der Befehl dbt parse schreibt das Manifest.

Mit dem Manifest anfangen

Der Befehl dbt parse schreibt das Manifest. Die Data Contract CLI importiert daraus das orders-Modell, mit Spalten, Beschreibungen, Primary Keys und Pflichtfeldern. Dann entfernst du eine interne Spalte und ergänzt die erlaubten Werte, die Währung und das E-Mail-Format.

Folie 3 von Entropy Explains Folge 10, In das Projekt synchronisieren: Der Befehl datacontract dbt sync schreibt den Contract in die Properties-Datei: Beschreibungen, Datentypen und Tests.

In das Projekt synchronisieren

Der Befehl datacontract dbt sync schreibt den Contract in die Properties-Datei: Beschreibungen, Datentypen und Tests. Checks, die dbt nicht ausdrücken kann, etwa Länge und Muster der E-Mail-Adresse, werden SQL-Tests. Spalten, die nicht im Contract stehen, bleiben im Projekt.

Folie 4 von Entropy Explains Folge 10, In den Worten des Contracts testen: Der Befehl datacontract dbt test führt die Tests aus und zeigt jeden Check mit dem Namen aus dem Contract.

In den Worten des Contracts testen

Der Befehl datacontract dbt test führt die Tests aus und zeigt jeden Check mit dem Namen aus dem Contract. Wenn eine Bestellung einen Status hat, den der Contract nicht erlaubt, schlägt der Check fehl. Der Befehl gibt dann einen Fehlercode zurück, damit eine Pipeline stoppen kann.

Folie 5 von Entropy Explains Folge 10, Auseinanderlaufen in der CI stoppen: In der CI führt die Pipeline den Sync erneut aus und prüft die Differenz.

Auseinanderlaufen in der CI stoppen

In der CI führt die Pipeline den Sync erneut aus und prüft die Differenz. Wenn jemand die dbt-Datei ändert und nicht den Contract, schreibt der Sync den Wert aus dem Contract zurück. Die Differenz ist nicht leer, und der Build schlägt bei diesem Commit fehl.

Folie 6 von Entropy Explains Folge 10, Die Ergebnisse veröffentlichen: Wenn Contract und dbt-Projekt übereinstimmen, laufen die Tests.

Die Ergebnisse veröffentlichen

Wenn Contract und dbt-Projekt übereinstimmen, laufen die Tests. Die Ergebnisse gehen in den Datenmarktplatz, wo Data Consumers sie sehen. So beginnt jede Änderung am Schema im Data Contract. Folge 6 zeigt die vollständige Pipeline.

Folie 7 von Entropy Explains Folge 10, Eine Kopie des Schemas: Der Data Contract ist die einzige Kopie des Schemas.

Eine Kopie des Schemas

Der Data Contract ist die einzige Kopie des Schemas. Der Sync-Befehl schreibt ihn als Properties und Tests in das dbt-Projekt. Die Tests prüfen die Daten, und die CI stellt sicher, dass Contract und dbt-Projekt nicht auseinanderlaufen.