Cum să scrii modele SQL în dbt
DodaTech
Updated 2025-01-15
2 min read
In this tutorial, you'll learn about Cum să scrii modele SQL în dbt. We cover key concepts, practical examples, and best practices.
Vei învăța cum să scrii modele SQL în dbt, transformând date brute în tabele și view-uri optimizate pentru analiză, folosind sintaxa Jinja și SQL.
Problema
Scripturile SQL tradiționale sunt greu de întreținut, netestabile și dificil de documentat. dbt introduce modele SQL care sunt modulare, testabile și versionabile.
Modul Greșit
-- Script SQL tradițional — nume hardcodat, fără reutilizare
SELECT
u.id,
u.name,
COUNT(o.id) as order_count
FROM raw_users u
LEFT JOIN raw_orders o ON u.id = o.user_id
GROUP BY u.id, u.name;
-- Dacă tabela se redenumește, trebuie actualizat manual peste tot
Modul Corect
-- models/order_summary.sql — model dbt
WITH user_orders AS (
SELECT
u.id,
u.name,
COUNT(o.id) AS order_count
FROM {{ ref('stg_users') }} u
LEFT JOIN {{ ref('stg_orders') }} o ON u.id = o.user_id
GROUP BY u.id, u.name
)
SELECT * FROM user_orders
dbt run --model order_summary
Output:
17:23:45 Running with dbt=1.8.0
17:23:46 Found 5 models, 3 tests, 2 sources
17:23:48 1 of 1 START sql view model dbt_schema.order_summary
17:23:49 1 of 1 OK created sql view model dbt_schema.order_summary
17:23:49 Finished running 1 model in 0.32s
Pas cu Pas
1. Creează un fișier SQL în directorul models/
models/
stg_users.sql
stg_orders.sql
order_summary.sql
2. Scrie modelul cu ref() pentru dependențe
-- models/stg_users.sql
SELECT
id,
name,
email,
created_at
FROM {{ source('raw', 'users') }}
3. Rulează modelul
dbt run --model stg_users
dbt run # Rulează toate modelele
Sfaturi de Prevenție
- Folosește
{{ ref() }}în loc de nume de tabele hardcodate - Separă modelele în subdirectoare (
staging/,marts/,intermediate/) - Rulează
dbt compileînainte dedbt runpentru a verifica sintaxa - Testează fiecare model cu
dbt test
Greșeli Comune
- Hardcodarea numelor de tabele — în loc de
{{ ref('model') }}, foloseștiraw.usersdirect - Nume de model incorecte în ref() — dacă modelul nu există, compilarea eșuează
- Fără alias-uri în JOIN — coloane ambigue cauzează erori SQL
- CTE-uri fără sens — prea multe CTE-uri care complică citirea
Întrebări Frecvente
Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu dbt pentru transformări de date sigure.
← Previous
Cum să definești surse de date în dbt cu source()
Next →
Cum să configurezi strategii de snapshot în dbt
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro