Creare test riutilizzabili personalizzati

dbt intermedio

Mike Metzger

Data Engineer

Cos'è un test riutilizzabile?

  • Un test riutilizzabile in più situazioni
  • Come un test dbt integrato, ma può verificare qualsiasi condizione
  • Usa i template Jinja
  • Salvato come file .sql nella cartella di progetto tests/generic
  • Devi aggiungerlo a model_properties.yml per ogni modello che lo usa

Riutilizzabile

1 Foto di Sigmund su Unsplash
dbt intermedio

Creare un test riutilizzabile

{% test check_gt_0(model, column_name) %}

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

{% endtest %}
  1. Prima riga (almeno): {% test testname(model, column_name) %}
  2. Aggiungi la query SQL, con sostituzioni {{ object }}
  3. Chiudi con {% endtest %}
dbt intermedio

Applicare il test al modello

  • Aggiungi in model_properties.yml
  • Definisci gli oggetti necessari
  • models: il valore name è l'argomento model
  • columns: l'argomento name è l'argomento 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 intermedio

Parametri extra

  • Puoi aggiungere parametri extra al test
  • Simile a accepted_values e relationships
  • Aggiungili come argomenti nell'intestazione Jinja
{% test check_columns_unequal(model, column_name, column_name2) %}

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

{% endtest %}
dbt intermedio

Applicare test con parametri extra

  • Definisci come gli altri test
  • Aggiungi gli argomenti extra sotto i dettagli del test
models:
  - name: order
    columns:
      - name: order_time
        tests:
          - check_columns_unequal:
              column_name2: shipped_time
dbt intermedio

Andiamo a fare pratica!

dbt intermedio

Preparing Video For Download...