Skapa anpassade återanvändbara tester

Intermediate dbt

Mike Metzger

Data Engineer

Vad är ett återanvändbart test?

  • Ett test som kan återanvändas i flera situationer
  • Liknar ett inbyggt dbt-test, men kan kontrollera vilket villkor som helst
  • Använder Jinja-templating
  • Sparas som en .sql-fil i projektmappen tests/generic
  • Testet måste läggas till i model_properties.yml för varje modell som använder det

Återanvändbart

1 Foto av Sigmund på Unsplash
Intermediate dbt

Skapa ett återanvändbart test

{% test check_gt_0(model, column_name) %}

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

{% endtest %}
  1. Första raden (minst): {% test testname(model, column_name) %}
  2. Lägg till en SQL-fråga med {{ object }}-substitutioner
  3. Avsluta filen med {% endtest %}
Intermediate dbt

Tillämpa ett återanvändbart test på en modell

  • Lägg till i model_properties.yml
  • Definiera objekten efter behov
  • Värdet models: name är modell-argumentet
  • Argumentet columns: name är column_name-argumentet
version: 2

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

- name: total_fare tests: - check_gt_0
Intermediate dbt

Extra parametrar

  • Extra parametrar kan läggas till i testet
  • Liknar accepted_values och relationships
  • Lägg till som argument i Jinja-headern
{% test check_columns_unequal(model, column_name, column_name2) %}

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

{% endtest %}
Intermediate dbt

Tillämpa tester med extra parametrar

  • Definieras precis som andra tester
  • Lägg till de extra argumenten under testdetaljerna
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
Intermediate dbt

Nu kör vi en övning!

Intermediate dbt

Preparing Video For Download...