Introductie tot testen in dbt

Gevorderde dbt

Mike Metzger

Data Engineer

Wat is een test?

  • Aannames/validaties van dbt-objecten
    • Modellen
    • Sources en seeds
  • Gebruikt om te controleren of data klopt
    • Null-waarden
    • Waarden binnen bereik
    • Relaties tussen data
    • Aangepaste tests (later)
Gevorderde dbt

Testtypen

dbt biedt drie soorten tests

  1. Ingebouwd (4 vooraf gedefinieerd)
  2. Singular*
  3. Generic*

$$

  • wordt later behandeld
Gevorderde dbt

Ingebouwde tests

  • unique
    • Controleert of alle waarden uniek zijn
  • not_null
    • Controleert of geen waarden null zijn
  • accepted_values
    • Controleert of waarden in een opgegeven lijst staan
    • values: [a, b, c, d]
  • relationships
    • Controleert relatie met specifieke tabel/kolom
    • to: ref('table')
    • field: id
Gevorderde dbt

Waar tests toevoegen?

  • models/model_properties.yml
    • Bestandsnaam is vrij
    • models/schema.yml
  • Gedefinieerd onder de kop 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]
Gevorderde dbt

Tests uitvoeren

  • dbt test
    • dbt test --select modelname
  • Controleer of de output slaagt
  • Bij falen: vergelijk met de gecompileerde SQL

dbt testresultaat met fouten

Gevorderde dbt

Fouten vinden

  1. Zoek de gecompileerde SQL-code
  2. In de map target/compiled/projectname/models/model_properties.yml
    • target/compiled/nyc_yellow_taxi/models/model_properties.yml/
  3. Zoek het juiste .sql-bestand (van de mislukte test)
  4. Kopieer de inhoud naar je databaseclient en vind de oorzaak
  5. Verwijder de fout uit de data en voer dbt run / dbt test opnieuw uit
Gevorderde dbt

Laten we oefenen!

Gevorderde dbt

Preparing Video For Download...