Skip to content

Cum să adaugi teste la modele în dbt

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să adaugi teste la modele în dbt. We cover key concepts, practical examples, and best practices.

Vei învăța cum să adaugi teste la modele dbt pentru a verifica automat calitatea datelor, integritatea referențială și validitatea valorilor.

Problema

Datele din bazele de date se degradează în timp — valori NULL apar în coloane obligatorii, duplicate, valori invalide. dbt oferă un sistem de testare care rulează automat și semnalează problemele.

Modul Greșit

-- Verificare manuală — uitată, nerepetabilă
SELECT COUNT(*) FROM users WHERE email IS NULL;
-- Rulezi manual când îți amintești, dar nu e în pipeline

Modul Corect

# models/schema.yml — teste declarative
version: 2
models:
  - name: stg_users
    columns:
      - name: id
        tests:
          - not_null
          - unique
      - name: email
        tests:
          - not_null
          - unique
      - name: status
        tests:
          - accepted_values:
              values: ['active', 'inactive', 'banned']

  - name: stg_orders
    columns:
      - name: id
        tests:
          - not_null
          - unique
      - name: user_id
        tests:
          - not_null
          - relationships:
              to: ref('stg_users')
              field: id
dbt test --model stg_users

Output:

17:23:45  1 of 4 PASS not_null_stg_users_id
17:23:45  2 of 4 PASS unique_stg_users_id
17:23:46  3 of 4 PASS not_null_stg_users_email
17:23:46  4 of 4 PASS accepted_values_stg_users_status
17:23:46  Finished running 4 tests

Pas cu Pas

1. Identifică coloanele critice

Alege coloanele care trebuie să fie mereu prezente și corecte.

2. Adaugă teste în schema.yml

columns:
  - name: order_id
    tests:
      - not_null
      - unique
  - name: status
    tests:
      - accepted_values:
          values: ['pending', 'shipped', 'delivered']

3. Rulează testele

dbt test              # Toate testele
dbt test --model stg_users  # Teste doar pentru un model
dbt test --select test_type:generic  # Doar teste generice

Sfaturi de Prevenție

  • Adaugă not_null și unique pe fiecare primary key
  • Testează integritatea referențială cu relationships
  • Rulează dbt test în pipeline-ul CI
  • Folosește --store-failures pentru a păstra istoricul testelor eșuate

Greșeli Comune

  1. Teste lipsă pe chei primarenot_null și unique ar trebui să fie pe fiecare ID
  2. Accepted_values prea strict — valori noi apar și testul eșuează; menține lista actualizată
  3. Relationship test cu type mismatch — coloanele trebuie să aibă același tip de date
  4. Prea multe teste pe coloane necritice — teste inutile încetinesc pipeline-ul

Întrebări Frecvente

### Cum testez relații între modele din proiecte diferite?

Folosește relationships cu to: ref('other_project', 'model_name') și field: id.

Pot rula doar testele eșuate?

Nu direct în dbt, dar poți folosi dbt test --store-failures și interoga tabela de test audit pentru a vedea istoricul.

Cum definesc teste personalizate?

Creează un fișier SQL în directorul tests/ care SELECTează înregistrări care încalcă regula de business.

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu dbt pentru testarea calității datelor.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro