Introduktion till testning i dbt

Intermediate dbt

Mike Metzger

Data Engineer

Vad är ett test?

  • Assertions/valideringar av dbt-objekt
    • Modeller
    • Källor och seeds
  • Används för att verifiera att data är som förväntat
    • Null-värden
    • Värden inom ett intervall
    • Relationer mellan data
    • Anpassade tester (behandlas senare)
Intermediate dbt

Testtyper

dbt erbjuder tre typer av tester

  1. Inbyggda (4 fördefinierade)
  2. Singulära*
  3. Generiska*

$$

  • behandlas senare
Intermediate dbt

Inbyggda tester

  • unique
    • Kontrollerar att alla värden är unika
  • not_null
    • Kontrollerar att inga värden är null
  • accepted_values
    • Kontrollerar att alla värden finns i en specifik lista
    • values: [a, b, c, d]
  • relationships
    • Verifierar en koppling till en specifik tabell/kolumn
    • to: ref('table')
    • field: id
Intermediate dbt

Var applicerar man tester?

  • models/model_properties.yml
    • Filen kan heta vad som helst
    • models/schema.yml
  • Definieras under underrubriken tests:
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]
Intermediate dbt

Köra tester

  • dbt test
    • dbt test --select modelname
  • Kontrollera att utdata godkänns
  • Vid fel, undersök kompilerad SQL

Utdata för misslyckat dbt-test

Intermediate dbt

Hitta fel

  1. Hitta den kompilerade SQL-koden
  2. I katalogen target/compiled/projectname/models/model_properties.yml
    • target/compiled/nyc_yellow_taxi/models/model_properties.yml/
  3. Hitta rätt .sql-fil (som matchar det misslyckade testet)
  4. Klistra in innehållet i databasklienten och identifiera felet
  5. Ta bort från data och kör dbt run / dbt test igen
Intermediate dbt

Nu kör vi en övning!

Intermediate dbt

Preparing Video For Download...