Einführung in das Testen in dbt

dbt für Forgeschrittene

Mike Metzger

Data Engineer

Was ist ein Test?

  • Feststellung / Validierung von dbt Objekten
    • Modelle
    • Quellen und Seeds
  • Verwendet, um zu überprüfen, ob die Daten wie erwartet vorliegen
    • Null-Werte
    • Werte im gültigen Bereich
    • Beziehungen zwischen Daten
    • Benutzerdefinierte Tests (werden später behandelt)
dbt für Forgeschrittene

Testtypen

dbt ermöglicht drei Arten von Tests

  1. Built-in (4 vordefinierte)
  2. Singular*

  3. Generic*

$$

  • wird später im Kurs behandelt_
dbt für Forgeschrittene

Vordefinierte Test

  • unique
    • Prüft, ob alle Werte eindeutig sind
  • not_null
    • Prüft auf Existenz von Null-Werten
  • accepted_values
    • Prüft, ob alle Werte in einer bestimmten Liste vorkommen
    • values: [a, b, c, d]
  • relationships
    • Prüft eine Verbindung zu einer bestimmten Tabelle / Spalte
    • to: ref('table')
    • field: id
dbt für Forgeschrittene

Wo werden Tests definiert?

  • models/model_properties.yml
    • Die Datei kann beliebig benannt werden
    • models/schema.yml
  • Definiert im tests:-Abschnitt
version: 2

models:
  - name: taxi_rides_raw
    columns:
      - name: tpep_pickup_datetime
        tests:
          - not_null
      - name: payment_type
        tests:
          - not_null
          - accepted_values:
              values: [1, 2, 3, 4, 5, 6]
dbt für Forgeschrittene

Ausführen von Tests

  • dbt test
    • dbt test --select modelname
  • Ausgabe prüfen, ob Tests bestanden wurden
  • Bei einem Fehler den sql-Code überprüfen

dbt failed test output

dbt für Forgeschrittene

Ursachenforschung

  1. SQL-Code finden
  2. Im Verzeichnis target/compiled/projectname/models/model_properties.yml
    • target/compiled/nyc_yellow_taxi/models/model_properties.yml/
  3. Die entsprechende .sql-Datei finden (die zum nicht-bestandenen Test gehört)
  4. Den Inhalt in den Datenbank-Client kopieren und ermitteln, was das Problem ist
  5. Daten entfernen und dbt run / dbt test erneut ausführen
dbt für Forgeschrittene

Lass uns üben!

dbt für Forgeschrittene

Preparing Video For Download...