dbt explained

What is dbt, and why is every data team using it?

dbt is the SQL-first transformation framework that turns raw warehouse tables into modeled, tested, documented datasets. If you're serious about data engineering in 2026, you have to know it — every mid-sized team runs on it.

The one-line definition

dbt (data build tool) is a framework for writing SQL transformations as version-controlled, tested, documented code — inside your warehouse, using your warehouse's compute. You write SELECTs; dbt handles the CREATE TABLE, dependency graph, incremental logic, tests, and docs.

Where dbt fits: ELT, not ETL

In the old ETL world you'd Extract data, Transform it in Python/Informatica/SSIS, then Load it into a warehouse. In modern ELT you Extract (Fivetran, Airbyte), Load raw into Snowflake/BigQuery/Databricks, and Transform inside the warehouse. That "T" is dbt.

dbt doesn't ingest data. It doesn't schedule itself. It's a compiler and runner — you point it at the raw tables, define models, and it materializes them in dependency order.

A dbt model in 6 lines

Here's what a dbt model actually looks like:

-- models/marts/orders.sql
{{ config(materialized='incremental', unique_key='order_id') }}

select
  order_id,
  customer_id,
  amount_cents / 100.0 as amount_usd,
  ordered_at
from {{ ref('stg_orders') }}
{% if is_incremental() %}
  where ordered_at > (select max(ordered_at) from {{ this }})
{% endif %}

Run dbt build and it compiles to warehouse SQL, creates or merges the table, runs any tests you defined, and updates the docs site. That's it.

The core primitives

  • Sources. Declared raw tables — where data lands from ingestion.
  • Models. SELECT statements dbt materializes as views, tables, or incremental tables.
  • Tests. Column-level (unique, not_null, accepted_values) or custom SQL. Fail the build when data breaks.
  • Seeds. Small CSVs checked into the repo, loaded as tables.
  • Snapshots. Slowly-changing dimension tracking (SCD Type 2), out of the box.
  • Macros. Reusable Jinja SQL — the DRY layer.
  • Exposures & docs. Auto-generated lineage graph and dependency docs.

Why teams standardized on dbt

  • Analysts can contribute. It's SQL + Git — no Airflow, no Python required.
  • Everything is versioned. Models live in a repo, ship through PR review.
  • Tests are cheap to add. Four lines of YAML and every model has referential integrity.
  • Lineage is free. The DAG is generated from ref() calls; docs come out of the box.
  • Portable. The same project runs on Snowflake, BigQuery, Databricks, Postgres, DuckDB.

Where to start

Install dbt Core, connect to DuckDB or a free Snowflake trial, and rebuild the Jaffle Shop example from scratch. Then take the DataForge dbt course for guided lessons and exercises, and pair it with the Snowflake tutorial to see it running against a real warehouse.

FAQ

What is dbt in data engineering?
dbt (data build tool) is the SQL-first transformation framework analytics engineers use to turn raw warehouse tables into modeled, tested, documented datasets. It compiles Jinja+SQL into warehouse-native SQL, materializes it as tables/views, and runs tests on every build.
Is dbt an ETL tool?
No — dbt is the T in ELT. It transforms data that's already in your warehouse. You still need ingestion (Fivetran, Airbyte, custom) and orchestration (Airflow, Dagster, dbt Cloud) around it.
Is dbt free?
dbt Core is open source and free forever — that's what most engineers learn on. dbt Cloud is the paid hosted version with a scheduler, IDE and a free tier for one developer.
Do I need to learn Python to use dbt?
No. dbt is SQL-first — you write SELECT statements with Jinja templating. Python models exist (on Snowflake, BigQuery, Databricks) but most projects are 100% SQL.
What's the difference between dbt Core and dbt Cloud?
Core is the CLI you run locally or in your own CI. Cloud adds a hosted scheduler, browser IDE, docs hosting, and CI integrations. Learn Core first — every interviewer expects it, and Cloud runs Core under the hood.

Ready to start?

7 days free. Then less than a coffee per month.

Learn dbt — 7 days free