Fondamenti di DBT (Data Build Tool)
Modelli i dati del data warehouse come istruzioni SELECT in dbt, utilizzando refs, sources e modelli incrementali.
Fondamenti di DBT (Data Build Tool) è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Cos'è dbt
dbt è la "T" di ELT: trasforma i dati all'interno del data warehouse usando istruzioni SELECT. Definisce modelli (SELECT) e dbt li materializza come tabelle o viste, gestisce le dipendenze ed esegue i test.
Perché dbt?
Prima di dbt, le trasformazioni risiedevano in script SQL ad hoc, stored procedure o job Python. dbt offre:
- SQL modulare come codice, con versionamento in Git
- Grafo delle dipendenze (ref()) invece di un ordinamento manuale
- Test come oggetti di prima classe
- Generazione della documentazione
Struttura del progetto
Un progetto dbt:
my_project/
dbt_project.yml
models/
staging/
stg_orders.sql
marts/
fct_revenue.sql
tests/
seeds/
macros/Un file di modello
Semplicemente un SELECT in un file .sql:
-- models/staging/stg_orders.sql
{{ config(materialized='view') }}
SELECT
id,
user_id,
total,
created_at
FROM {{ source('raw', 'orders') }}Tipi di materializzazione
- view — dbt crea una VIEW; rapida da aggiornare, più lenta nelle query
- table — tabella completa; ricostruita a ogni esecuzione
- incremental — vengono aggiunte solo le righe nuove
- ephemeral — CTE incorporata, senza oggetti nel database
ref() e dipendenze
Faccia riferimento a un modello da un altro:
-- models/marts/fct_revenue.sql
SELECT
date_trunc('day', created_at) AS day,
SUM(total) AS revenue
FROM {{ ref('stg_orders') }}
GROUP BY 1Eseguire dbt
Crei l'intero progetto:
dbt run # build all models
dbt run --select staging # subset
dbt run --select +fct_revenue # this model and upstream
dbt build # run + testSorgenti
Le sorgenti documentano e fanno riferimento alle tabelle grezze:
# models/sources.yml
sources:
- name: raw
database: warehouse
tables:
- name: ordersModelli incrementali
Per tabelle dei fatti di grandi dimensioni:
{{ config(materialized='incremental', unique_key='id') }}
SELECT *
FROM {{ source('raw','orders') }}
{% if is_incremental() %}
WHERE created_at > (SELECT MAX(created_at) FROM {{ this }})
{% endif %}Templating con Jinja
dbt è SQL + Jinja, quindi può usare cicli e generare SQL in modo condizionale:
{% set tiers = ['free','pro','enterprise'] %}
SELECT user_id,
{% for t in tiers %}
COUNT(*) FILTER (WHERE tier = '{{ t }}') AS {{ t }}_count {% if not loop.last %},{% endif %}
{% endfor %}
FROM users GROUP BY user_idSnapshot
Dimensioni a variazione lenta acquisite automaticamente:
{% snapshot user_snapshot %}
{{ config(
target_schema='snapshots',
unique_key='id',
strategy='timestamp',
updated_at='updated_at',
) }}
SELECT * FROM {{ source('raw','users') }}
{% endsnapshot %}Documentazione
Generi automaticamente documentazione consultabile dai modelli e dalle descrizioni YAML:
dbt docs generate
dbt docs serve # opens browserRiepilogo
dbt modella le trasformazioni dei dati come codice SQL.
- Modello = SELECT in un file .sql
- ref() costruisce il DAG
- Materializzazioni: view / table / incremental / ephemeral
- Test e documentazione come elementi di prima classe
Verifica rapida
Cosa fa {{ ref('stg_orders') }} di dbt?
Domande Frequenti
La lezione «Fondamenti di DBT (Data Build Tool)» è gratuita?
Sì — il testo completo di «Fondamenti di DBT (Data Build Tool)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Fondamenti di DBT (Data Build Tool)»?
Modelli i dati del data warehouse come istruzioni SELECT in dbt, utilizzando refs, sources e modelli incrementali. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Fondamenti di DBT (Data Build Tool)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Fondamenti di DBT (Data Build Tool)
- SQLFluff e linting
- Test dell’SQL: test dbt e Great Expectations
- CI per le modifiche allo schema (GitHub Actions)