Vytváření vlastních znovupoužitelných testů

Intermediate dbt

Mike Metzger

Data Engineer

Co je znovupoužitelný test?

  • Test, který lze znovu použít ve více situacích
  • Podobné jako vestavěný dbt test, ale může ověřit libovolnou podmínku
  • Využívá šablonování Jinja
  • Uloženo jako soubor .sql ve složce projektu tests/generic
  • Test je nutné přidat do model_properties.yml pro každý model, který ho používá

Znovupoužitelné

1 Photo by Sigmund on Unsplash
Intermediate dbt

Vytvoření znovupoužitelného testu

{% test check_gt_0(model, column_name) %}

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

{% endtest %}
  1. První řádek (alespoň): {% test testname(model, column_name) %}
  2. Přidejte SQL dotaz s nahrazeními {{ object }}
  3. Ukončete soubor pomocí {% endtest %}
Intermediate dbt

Použití znovupoužitelného testu na model

  • Přidejte do model_properties.yml
  • Definujte objekty dle potřeby
  • Hodnota models: name odpovídá argumentu model
  • Argument columns: name odpovídá argumentu column_name
version: 2

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

- name: total_fare tests: - check_gt_0
Intermediate dbt

Další parametry

  • Lze přidat další parametry testu
  • Podobné jako accepted_values a relationships
  • Přidejte jako argumenty do hlavičky Jinja
{% test check_columns_unequal(model, column_name, column_name2) %}

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

{% endtest %}
Intermediate dbt

Použití testů s extra parametry

  • Definujte jako ostatní testy
  • Přidejte extra argumenty pod detaily testu
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
Intermediate dbt

Pojďme si procvičit!

Intermediate dbt

Preparing Video For Download...