Tworzenie niestandardowych testów wielokrotnego użytku

dbt średnio zaawansowany

Mike Metzger

Data Engineer

Czym jest test wielokrotnego użytku?

  • Test wielokrotnego użytku w różnych sytuacjach
  • Podobny do wbudowanego testu dbt, ale sprawdza dowolny warunek
  • Używa szablonów Jinja
  • Zapisywany jako plik .sql w folderze tests/generic
  • Należy dodać test do model_properties.yml dla każdego modelu, który go używa

Wielokrotnego użytku

1 Photo by Sigmund on Unsplash
dbt średnio zaawansowany

Tworzenie testu wielokrotnego użytku

{% test check_gt_0(model, column_name) %}

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

{% endtest %}
  1. Pierwszy wiersz (co najmniej): {% test testname(model, column_name) %}
  2. Dodaj zapytanie SQL z podstawieniami {{ object }}
  3. Zakończ plik wyrażeniem {% endtest %}
dbt średnio zaawansowany

Stosowanie testu wielokrotnego użytku do modelu

  • Dodaj do model_properties.yml
  • Zdefiniuj obiekty według potrzeb
  • Wartość models: name to argument modelu
  • Argument columns: name to argument column_name
version: 2

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

- name: total_fare tests: - check_gt_0
dbt średnio zaawansowany

Dodatkowe parametry

  • Można dodać dodatkowe parametry do testu
  • Podobnie jak accepted_values i relationships
  • Dodaj jako argumenty do nagłówka Jinja
{% test check_columns_unequal(model, column_name, column_name2) %}

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

{% endtest %}
dbt średnio zaawansowany

Stosowanie testów z dodatkowymi parametrami

  • Definiuj jak inne testy
  • Dodaj dodatkowe argumenty poniżej szczegółów testu
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
dbt średnio zaawansowany

Czas na ćwiczenia!

dbt średnio zaawansowany

Preparing Video For Download...