Crearea testelor reutilizabile personalizate

dbt intermediar

Mike Metzger

Data Engineer

Ce este un test reutilizabil?

  • Un test care poate fi reutilizat în mai multe situații
  • Similar cu un test dbt integrat, dar poate verifica orice condiție
  • Folosește șablonarea Jinja
  • Salvat ca fișier .sql în folderul tests/generic al proiectului
  • Testul trebuie adăugat în model_properties.yml pentru fiecare model care îl utilizează

Reutilizabil

1 Photo by Sigmund on Unsplash
dbt intermediar

Crearea unui test reutilizabil

{% test check_gt_0(model, column_name) %}

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

{% endtest %}
  1. Prima linie (cel puțin): {% test testname(model, column_name) %}
  2. Se adaugă interogarea SQL, cu substituții {{ object }}
  3. Fișierul se încheie cu {% endtest %}
dbt intermediar

Aplicarea testului reutilizabil unui model

  • Se adaugă în model_properties.yml
  • Se definesc obiectele după necesitate
  • Valoarea models: name reprezintă argumentul model
  • Argumentul columns: name reprezintă argumentul 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 intermediar

Parametri suplimentari

  • Se pot adăuga parametri suplimentari testului
  • Similar cu accepted_values și relationships
  • Se adaugă ca argumente în antetul Jinja
{% test check_columns_unequal(model, column_name, column_name2) %}

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

{% endtest %}
dbt intermediar

Aplicarea testelor cu parametri suplimentari

  • Se definește ca orice alt test
  • Se adaugă argumentele suplimentare sub detaliile testului
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
dbt intermediar

Să exersăm!

dbt intermediar

Preparing Video For Download...