Aangepaste, herbruikbare tests maken

Gevorderde dbt

Mike Metzger

Data Engineer

Wat is een herbruikbare test?

  • Een test die je in meerdere situaties hergebruikt
  • Lijkt op een ingebouwde dbt-test, maar kan elke voorwaarde checken
  • Gebruikt Jinja-templating
  • Opgeslagen als .sql in de map tests/generic van het project
  • Voeg de test toe aan model_properties.yml voor elk model dat ’m gebruikt

Herbruikbaar

1 Foto door Sigmund op Unsplash
Gevorderde dbt

Een herbruikbare test maken

{% test check_gt_0(model, column_name) %}

select * 
from {{ model }}
where {{ column_name }} > 0

{% endtest %}
  1. Eerste regel (minstens): {% test testname(model, column_name) %}
  2. Voeg SQL-query toe met {{ object }}-vervanging
  3. Sluit af met {% endtest %}
Gevorderde dbt

Herbruikbare test toepassen op model

  • Voeg toe aan model_properties.yml
  • Definieer de objecten waar nodig
  • De waarde bij models: name is het model-argument
  • De waarde bij columns: name is het column_name-argument
version: 2

models:
  - name: taxi_rides_raw
    columns:
      - name: tpep_pickup_datetime
        tests:
          - not_null

- name: total_fare tests: - check_gt_0
Gevorderde dbt

Extra parameters

  • Extra parameters toevoegen aan de test
  • Vergelijkbaar met accepted_values en relationships
  • Voeg ze toe als argumenten in de Jinja-header
{% test check_columns_unequal(model, column_name, column_name2) %}

select * from {{ model }}
where {{ column_name }} = {{ column_name2 }}

{% endtest %}
Gevorderde dbt

Extra-parameter-tests toepassen

  • Definieer zoals andere tests
  • Zet de extra argumenten onder de testdetails
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
Gevorderde dbt

Laten we oefenen!

Gevorderde dbt

Preparing Video For Download...