Cum să creezi teste generice în dbt
DodaTech
Updated 2025-01-15
2 min read
In this tutorial, you'll learn about Cum să creezi teste generice în dbt. We cover key concepts, practical examples, and best practices.
Vei învăța cum să creezi teste generice în dbt — șabloane de test reutilizabile care pot fi aplicate pe orice model sau coloană direct din YAML.
Problema
Aceleași verificări (not_null, unique) se repetă pe multe coloane. Testele generice evită duplicarea codului SQL, permițând definirea o singură dată și reutilizarea prin configurare YAML.
Modul Greșit
-- Teste singular duplicate — același SQL în mai multe fișiere
-- tests/assert_users_id_not_null.sql
SELECT * FROM {{ ref('stg_users') }} WHERE id IS NULL;
-- tests/assert_orders_id_not_null.sql — același concept
SELECT * FROM {{ ref('stg_orders') }} WHERE id IS NULL;
Modul Corect
1. Creează testul generic
-- tests/generic/test_not_null.sql
{% test not_null(model, column_name) %}
SELECT *
FROM {{ model }}
WHERE {{ column_name }} IS NULL
{% endtest %}
2. Aplică testul în YAML
# models/schema.yml
version: 2
models:
- name: stg_users
columns:
- name: id
tests:
- not_null # Folosește testul generic definit mai sus
- name: email
tests:
- not_null
- name: stg_orders
columns:
- name: id
tests:
- not_null
- name: user_id
tests:
- not_null
dbt test --select stg_users
Output:
17:23:45 1 of 2 PASS not_null_stg_users_id
17:23:45 2 of 2 PASS not_null_stg_users_email
Pas cu Pas
1. Creează directorul tests/generic/
tests/
generic/
test_not_null.sql
test_unique.sql
test_accepted_values.sql
2. Scrie șablonul testului
{% test accepted_values(model, column_name, values) %}
SELECT *
FROM {{ model }}
WHERE {{ column_name }} NOT IN (
{% for value in values %}
'{{ value }}'{% if not loop.last %},{% endif %}
{% endfor %}
)
{% endtest %}
3. Aplică în YAML
columns:
- name: status
tests:
- accepted_values:
values: ['active', 'inactive', 'banned']
Sfaturi de Prevenție
- Plasează testele generice în
tests/generic/cu prefixultest_ - Testele generice primesc
modelși parametri adiționali - Reutilizează testele built-in înainte de a crea unele noi
- Documentează parametrii testelor generice
Greșeli Comune
- Nume fără prefixul
test_— dbt nu recunoaște fișierul ca test generic - Parametri insuficienți — testul are nevoie de parametri care nu sunt furnizați în YAML
- Director greșit — testele generice trebuie să fie în
tests/generic/, nu direct întests/ - Test generic prea specific — fă-l parametrizabil, nu hardcodat pentru un model anume
Întrebări Frecvente
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu dbt pentru teste generice reutilizabile.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro