Salta al contenuto principale

01 - Cos'è dbt e Perché l'Analytics Engineering Sta Rivoluzionando il Data Stack

dbt 10 min Cos'è dbt e Perché l'Analytics Engineering Sta Rivoluzionando il Data Stack dbt porta il software engineering nel SQL: versioning con Git,...

Cosa ne pensi di questo articolo?

In Breve

dbt 10 min Cos'è dbt e Perché l'Analytics Engineering Sta Rivoluzionando il Data Stack dbt porta il software engineering nel SQL: versioning con Git,...

dbt 10 min

Cos'è dbt e Perché l'Analytics Engineering Sta Rivoluzionando il Data Stack

dbt porta il software engineering nel SQL: versioning con Git, testing automatico, documentazione auto-generata e deployment pipeline. Scopri cos'è l'analytics engineering, il ruolo dell'analytics engineer e perché dbt è diventato lo standard per data transformation su Snowflake, BigQuery e Redshift.

dbt tutorial analytics engineering dbt core ELT vs ETL data stack moderno

Il Problema che dbt Risolve

Immagina un data warehouse pieno di query SQL scritte da analisti diversi nel corso di tre anni. Centinaia di view chiamate final_v3_DEFINITIVO_bis, logiche di calcolo duplicate in dieci posti diversi, nessun test che garantisca la qualità dei dati, e zero documentazione su cosa significhi realmente quella colonna net_revenue_adjusted.

Questo è il punto di partenza per la maggior parte dei team data nel 2026. E è esattamente il problema che dbt (data build tool) è stato progettato per risolvere.

dbt non è un nuovo ETL tool, non è un orchestratore di pipeline e non è un data warehouse. È uno strumento di trasformazione: prende dati già caricati nel warehouse e li trasforma in modelli analitici pronti per il consumo, usando SQL e le pratiche dell'ingegneria del software.

ELT vs ETL: Perché il Mondo è Cambiato

Per decenni il paradigma dominante è stato ETL: Extract, Transform, Load. I dati venivano estratti dalle sorgenti, trasformati in un layer intermedio (spesso su server dedicati) e poi caricati nel data warehouse già nella forma finale.

L'avvento di data warehouse cloud come Snowflake, BigQuery e Amazon Redshift ha ribaltato questa logica. Questi sistemi hanno potenza di calcolo praticamente illimitata e costi di storage bassissimi. Non ha più senso trasformare i dati prima di caricarli: meglio caricarli grezzi e trasformarli dopo, direttamente nel warehouse. Nasce così ELT.

ELT vs ETL: la Differenza Fondamentale

  • ETL: trasformazione fuori dal warehouse (server dedicato, Spark, Talend) - costoso, rigido, difficile da debuggare
  • ELT: trasformazione dentro il warehouse (SQL nativo) - scalabile, economico, più facile da testare e documentare
  • dbt è lo strumento ELT per eccellenza: gestisce la T di ELT con ingegneria del software

Cos'è dbt in Concreto

dbt è uno strumento a riga di comando (e cloud) che ti permette di:

  • Scrivere trasformazioni SQL come modelli versionati in Git
  • Definire dipendenze automatiche tra modelli con il macro ref()
  • Aggiungere test di qualità ai dati direttamente nel codice
  • Generare automaticamente documentazione e lineage graph
  • Eseguire tutto questo in un pipeline CI/CD

Un modello dbt è semplicemente un file SQL con un SELECT. dbt lo materializza nel warehouse come view, table, o tabella incrementale, in base alla configurazione.

-- models/marts/finance/orders_daily.sql
-- dbt materializza questo come una tabella nel warehouse

SELECT
    DATE_TRUNC('day', created_at) AS order_date,
    SUM(total_amount) AS revenue,
    COUNT(*) AS order_count,
    AVG(total_amount) AS avg_order_value
FROM {{ ref('stg_orders') }}          -- ref() crea la dipendenza
WHERE status = 'completed'
GROUP BY 1

Nota il {{ ref('stg_orders') }}: dbt sa che questo modello dipende da stg_orders, costruisce automaticamente il grafo delle dipendenze (DAG) e garantisce che i modelli vengano eseguiti nell'ordine corretto.

Il Ruolo dell'Analytics Engineer

L'ascesa di dbt ha creato una nuova figura professionale: l'analytics engineer. È il profilo a metà strada tra data analyst e data engineer:

  • Conosce SQL profondamente come un analyst
  • Applica pratiche di ingegneria del software (Git, testing, CI/CD) come un engineer
  • Costruisce e mantiene il layer di trasformazione del data warehouse
  • Collabora con data analyst (che consumano i modelli) e data engineer (che gestiscono le pipeline di ingestion)

Secondo il State of Data Engineering 2025, il ruolo di analytics engineer è cresciuto del 340% negli ultimi tre anni su LinkedIn, rendendolo uno dei profili più ricercati nel mondo data.

L'Ecosistema dbt nel 2026

dbt non è solo un tool: è diventato un ecosistema completo con due distribuzioni principali:

dbt Core

La versione open-source e gratuita di dbt. Si installa via pip, funziona da riga di comando e si integra con qualsiasi sistema CI/CD. Supporta tutti i principali data warehouse: Snowflake, BigQuery, Redshift, Databricks, DuckDB, PostgreSQL e molti altri tramite adapter.

dbt Cloud

Il servizio managed di dbt Labs, l'azienda dietro dbt. Aggiunge un IDE web, scheduler integrato, monitoring, dbt Explorer (lineage avanzato) e il dbt Semantic Layer per metriche consistenti. Disponibile con piano gratuito per developers e piani enterprise da $100/mese per team.

I Pilastri del Progetto dbt

Un progetto dbt ha una struttura standard che porta ordine dove prima c'era chaos:

jaffle_shop/                    # nome del progetto
├── dbt_project.yml             # configurazione del progetto
├── profiles.yml               # credenziali di connessione (locale)
├── models/
│   ├── staging/               # modelli vicini alla sorgente
│   │   ├── stg_orders.sql
│   │   ├── stg_customers.sql
│   ├── marts/                 # modelli business-oriented
│       ├── finance/
│       │   └── orders_daily.sql
│       └── marketing/
│           └── customer_ltv.sql
├── tests/                     # test SQL personalizzati
├── seeds/                     # CSV statici come reference data
├── macros/                    # funzioni SQL riutilizzabili
└── analyses/                 # query ad hoc (non materializzate)

Questa struttura a livelli (staging → intermediate → marts) è una best practice dbt chiamata layered architecture:

  • Staging: 1-a-1 con le sorgenti, solo rinominare e castare i tipi
  • Intermediate: join e aggregazioni complesse tra staging models
  • Marts: modelli finali pronti per il consumo da parte di BI e analytics

Testing e Documentazione: Le Killer Feature di dbt

Due feature di dbt che trasformano completamente il ciclo di sviluppo dei dati:

Testing Automatico

Definisci test direttamente nel file YAML che accompagna ogni modello:

# models/staging/schema.yml
models:
  - name: stg_orders
    columns:
      - name: order_id
        tests:
          - unique
          - not_null
      - name: status
        tests:
          - accepted_values:
              values: ['completed', 'pending', 'cancelled']
      - name: customer_id
        tests:
          - not_null
          - relationships:
              to: ref('stg_customers')
              field: customer_id

Con dbt test, dbt esegue questi test come query SQL nel warehouse e fallisce la pipeline se qualcosa non va. Zero codice Python, zero framework esterni.

Documentazione Auto-Generata

Aggiungi descrizioni nello stesso file YAML:

# models/marts/schema.yml
models:
  - name: orders_daily
    description: "Aggregazione giornaliera degli ordini completati"
    columns:
      - name: order_date
        description: "Data dell'ordine, troncata al giorno"
      - name: revenue
        description: "Totale ricavi per il giorno, al netto dei resi"

dbt docs generate && dbt docs serve genera un sito statico con documentazione completa e il DAG interattivo che mostra le dipendenze tra tutti i modelli. Ogni colonna è documentata e tracciabile fino alla sorgente.

dbt nel Data Stack Moderno

dbt è tipicamente il layer T dello stack ELT moderno:

  • Ingestion: Airbyte, Fivetran, Stitch o script Python caricano i dati raw nel warehouse
  • Storage: Snowflake, BigQuery, Redshift, Databricks Delta Lake
  • Transformation: dbt trasforma i dati raw in modelli analitici
  • BI & Analytics: Looker, Metabase, Tableau o notebooks consumano i modelli dbt

Nel 2026, dbt è presente nel data stack di oltre 30.000 aziende (dati dbt Labs), dalle startup ai colossi come GitLab, JetBlue, Conde Nast e Shopify.

Perché Imparare dbt nel 2026

Le ragioni concrete per investire tempo nell'apprendimento di dbt:

  • Domanda di mercato: "dbt" appare nel 45% delle offerte di lavoro per data engineer e analytics engineer su LinkedIn in Europa
  • Produttività: team dbt riportano una riduzione del 60-70% del tempo dedicato al debugging di pipeline dati grazie a test automatici
  • Ecosistema: oltre 200 package dbt su dbt Hub, incluso dbt-utils (la libreria standard) e dbt-expectations per test avanzati
  • Osservabilità: integrazione nativa con Elementary, re_data e tool di data observability per monitoring della qualità in produzione

dbt Non è per Tutti

dbt ha senso se hai già un data warehouse cloud e lavori con SQL come linguaggio primario. Non sostituisce Spark per trasformazioni massive su dati non strutturati, né è adatto a pipeline streaming real-time (per quelle usa Flink, Kafka Streams o Spark Structured Streaming). Il sweet spot di dbt è il batch analytics su warehouse SQL.

Conclusioni e Prossimi Passi

dbt ha ridefinito come i team data costruiscono e mantengono le loro pipeline analitiche, portando le pratiche mature dell'ingegneria del software - testing, versioning, documentazione, CI/CD - in un mondo che per decenni ha vissuto senza di esse.

Il concetto chiave da portare a casa: dbt non è uno strumento di nicchia per grandi enterprise. È accessibile, open-source e funziona anche su un singolo laptop con DuckDB come backend. La curva di apprendimento è bassa per chi conosce SQL, alta la ricompensa.

Nel prossimo articolo della serie configureremo un progetto dbt Core da zero: installeremo dbt, scriveremo il profiles.yml, creeremo i nostri primi modelli e vedremo il ref() macro in azione su un dataset reale.

Prova Questi Strumenti

Strumenti gratuiti correlati a questo argomento.

Commenti

Caricamento commenti...

Accedi per commentare

Discuti questo articolo nella community

Unisciti al gruppo Telegram per discutere con altri sviluppatori, fare domande e condividere le tue esperienze.

Ti è piaciuto questo articolo?

Esplora altri contenuti sul blog o scopri i miei progetti