Cum să creezi teste personalizate în dbt
DodaTech
Updated 2025-01-15
2 min read
In this tutorial, you'll learn about Cum să creezi teste personalizate în dbt. We cover key concepts, practical examples, and best practices.
Vei învăța cum să creezi teste personalizate în dbt, combinând teste generice proprii cu teste singular, pentru a acoperi orice regulă de business.
Problema
Testele built-in acoperă cazuri comune. Pentru reguli specifice — "totalul comenzii trebuie să fie pozitiv", "emailul trebuie să aibă format valid" — ai nevoie de teste personalizate.
Modul Greșit
# schema.yml — teste insuficiente
models:
- name: stg_orders
columns:
- name: total
tests:
- not_null # Nu verifică dacă total > 0
-- Verificare manuală — uitată
SELECT * FROM stg_orders WHERE total < 0;
Modul Corect
Test generic personalizat
-- tests/generic/test_positive_value.sql
{% test positive_value(model, column_name) %}
SELECT *
FROM {{ model }}
WHERE {{ column_name }} <= 0
{% endtest %}
Test singular
-- tests/assert_valid_email_format.sql
SELECT *
FROM {{ ref('stg_users') }}
WHERE email NOT LIKE '%@%.%'
AND email IS NOT NULL
Aplică testele
# models/schema.yml
models:
- name: stg_orders
columns:
- name: total
tests:
- not_null
- positive_value # Testul tău custom
- name: stg_users
tests:
- assert_valid_email_format # Test singular
dbt test
Output:
17:23:45 1 of 3 PASS not_null_stg_orders_total
17:23:45 2 of 3 PASS positive_value_stg_orders_total
17:23:46 3 of 3 PASS assert_valid_email_format
Pas cu Pas
1. Creează un test generic custom
-- tests/generic/test_date_is_past.sql
{% test date_is_past(model, column_name) %}
SELECT *
FROM {{ model }}
WHERE {{ column_name }} > CURRENT_DATE
{% endtest %}
columns:
- name: order_date
tests:
- date_is_past
2. Creează un test singular
-- tests/assert_no_orphan_orders.sql
SELECT o.*
FROM {{ ref('stg_orders') }} o
LEFT JOIN {{ ref('stg_users') }} u ON o.user_id = u.id
WHERE u.id IS NULL
3. Rulează toate testele
dbt test --select test_type:generic # Doar teste generice (inclusiv custom)
dbt test --select test_type:singular # Doar teste singular
Sfaturi de Prevenție
- Preferă testele generice custom când aceeași logică se aplică pe mai multe coloane
- Folosește teste singular pentru reguli unice, specifice unui model
- Testează testul personalizat manual înainte de a-l include în pipeline
- Documentează ce verifică fiecare test custom
Greșeli Comune
- Test generic fără parametrul
model— dbt nu poate pasa modelul; testul eșuează - Nume de test conflictual — testul tău custom are același nume ca un test built-in
- Test singular prea complex — verifică prea multe reguli; separă în teste multiple
- Test care nu returnează rânduri — testul e întotdeauna PASS, indiferent de date
Întrebări Frecvente
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu dbt pentru teste complet personalizate.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro