0Pricing
SQL Academy · Lezione

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 1

Eseguire 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 + test

Sorgenti

Le sorgenti documentano e fanno riferimento alle tabelle grezze:

# models/sources.yml
sources:
  - name: raw
    database: warehouse
    tables:
      - name: orders

Modelli 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_id

Snapshot

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 browser

Riepilogo

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

  1. Fondamenti di DBT (Data Build Tool)
  2. SQLFluff e linting
  3. Test dell’SQL: test dbt e Great Expectations
  4. CI per le modifiche allo schema (GitHub Actions)
← Torna a SQL Academy