Cloud Parts

dbt

SQL select statements in git, built into warehouse tables in dependency order, with tests and docs alongside.

Type
Open source
Made by
Fivetran + dbt Labs
License
Apache 2.0 (dbt v1, and the source of dbt v2 built as dbt-oss); the default dbt v2 binary adds proprietary features under the dbt product licence; the dbt platform is proprietary SaaS
Facts checked
6 October 2026

What it is

A dbt project is a folder of models, each a .sql file holding one select, plus YAML files with tests and descriptions. dbt runs wherever you start it: a laptop, a CI job or a scheduler. It renders the Jinja in each model, swaps {{ ref('stg_orders') }} for the real table name, and builds a dependency graph from those references. It then sends create table as, create view or merge statements to the warehouse through an adapter, in graph order, so the warehouse does all the work and the data never passes through dbt. Data tests are queries that return failing rows; dbt build runs models and tests together and skips everything downstream of a failed test. dbt docs generate writes a static site with the lineage graph.

There are two engines. dbt v1 is the original Python program (dbt-core plus one adapter package per warehouse), Apache 2.0 and still maintained. dbt v2, released on 14 September 2026, is a Rust rewrite that grew out of the Fusion engine and ships as one binary. Its source is Apache 2.0 and installs as dbt-oss; the default dbt distribution adds proprietary SQL comprehension (errors caught before the warehouse runs anything, editor autocomplete, dbt lint) and is free to use. The hosted dbt platform, formerly dbt Cloud, adds scheduling, CI, a browser IDE and a catalog: Developer is free for one seat and 3,000 successful model builds a month, Starter is $100 per seat per month with five developer seats and 15,000 builds, and Enterprise is priced by quote (checked 6 October 2026). dbt Labs merged with Fivetran in June 2026; dbt continues as its own brand.

Why teams pick it

  • Plain SQL plus Jinja: anyone who writes select statements can build models, and ref() works out the build order
  • Software habits for analytics: models live in git, run in CI and carry tests and descriptions next to the code
  • Runs on the warehouse you already have, through adapters for Snowflake, BigQuery, Databricks, Redshift, DuckDB and, on v1, Postgres and many community adapters
  • Widely supported: Dagster, Fabric Data Factory and Fivetran all run dbt projects
  • Open-source core under Apache 2.0, and v2 installs as a single binary with no Python environment to manage

Watch out for

  • Only the T: dbt doesn’t extract or load data, so you still need a loader (Fivetran, Airbyte, CDC) and usually an orchestrator
  • A version in transition: v2 is stricter at parse time and supports fewer warehouses so far (BigQuery, Databricks, Redshift, Snowflake and DuckDB GA; Spark beta; ClickHouse private beta); Postgres stays on v1
  • Layered licensing: the source is Apache 2.0, but the default v2 binary includes proprietary code, and products that embed it must let users sign in to the dbt platform
  • Every run is warehouse compute: full rebuilds of big models add up, which is why incremental models exist and why dbt sells dbt State ($0.094 per daily active target table) to skip unchanged ones

Alternatives

What all etl & elt pipelines have in common →
AirbyteCommercialAn ELT platform you can host yourself: hundreds of connectors, each a Docker image speaking one JSON protocol, scheduled by services on Kubernetes.Apache NiFiOpen sourceA Java dataflow server you program by drawing a graph of processors in a web UI, with buffered queues, back pressure and a record of where every piece of data went.ArtieCommercialA managed change data capture service that copies every insert, update and delete from production databases into a warehouse, aiming for under a minute of delay.BruinOpen sourceOne Go command-line tool that ingests data, runs SQL and Python transformations and checks the results, with each step a file in your repo.DagsterOpen sourceA Python data orchestrator built around assets: you declare the tables, files and models that should exist, and Dagster works out what to run.EstuaryCommercialA managed data-movement platform that captures changes from databases and SaaS sources into collections kept as JSON files in your own bucket, then keeps warehouses and other systems in sync, in real time or on a schedule.FivetranCommercialManaged connectors that copy data from SaaS apps, databases and files into your warehouse or lake, billed by the rows that change each month.MeltanoOpen sourceA command-line ELT tool that runs Singer taps and targets from a `meltano.yml` project kept in git.OLakeOpen sourceAn open-source tool in Go that copies databases, Kafka topics and S3 files into Apache Iceberg tables (or plain Parquet), with full loads, incremental syncs and CDC, and no Kafka, Debezium, Spark or Flink in between.

How it fits with other technologies

An incremental model, its tests, and the command that builds both · sql

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

select
    cast(o.created_at as date) as order_date,
    count(*)                   as orders,
    sum(p.amount)              as revenue
from {{ ref('stg_orders') }} as o
join {{ ref('stg_payments') }} as p on p.order_id = o.order_id
where p.status = 'succeeded'
{% if is_incremental() %}
  -- later runs only redo days from the newest one already built
  and cast(o.created_at as date) >= (select max(order_date) from {{ this }})
{% endif %}
group by 1

-- models/marts/schema.yml
--   models:
--     - name: fct_daily_revenue
--       columns:
--         - name: order_date
--           data_tests: [unique, not_null]
--
-- dbt build --select +fct_daily_revenue   # upstream models, this one, then its tests

dbt v1, dbt v2, dbt OSS and the dbt platform#

The same project files work across all four. What differs is the engine, the licence and the extras.

dbt v1dbt v2 (`dbt`)dbt OSS (`dbt-oss`)dbt platform
EnginePythonRust, one binaryRust, same source as v2Runs v1 or v2 for you
LicenceApache 2.0dbt product licence (free; includes proprietary code)Apache 2.0Proprietary SaaS
Installpip install dbt-core dbt-postgrespip install dbt, Homebrew, curl scriptpip install dbt-ossNothing local
SQL comprehension, autocomplete, `dbt lint`NoYes (some features after a free sign-in)NoYes
WarehousesDozens of trusted and community adaptersBigQuery, Databricks, Redshift, Snowflake, DuckDB; Spark and ClickHouse in betaSame engine as v2Depends on the engine chosen
PriceFreeFreeFreeDeveloper free (1 seat); Starter $100 per seat per month; Enterprise by quote
  • dbt v1 keeps receiving critical support through dbt Core 1.13, and dbt Labs expects several (3 to 5) years of maintenance.
  • Prices from getdbt.com/pricing, checked 6 October 2026.

Other ways to do the T#

SQLMesh

Apache 2.0

A transformation framework that is compatible with dbt projects, with a plan and apply workflow and virtual development environments. Built by Tobiko Data, which Fivetran bought in 2025; now a Linux Foundation project.

Dataform

Google Cloud

SQLX files with ref() and assertions, compiled and run inside BigQuery. A managed service tied to BigQuery.

Bruin

Apache 2.0

One Go binary for ingestion, SQL and Python transforms and quality checks, so a small team can skip a separate loader.

dbt jobs in Fabric

Microsoft Fabric

Fabric Data Factory can build, test and deploy dbt models on a Fabric data warehouse without running dbt yourself.

See it in a real stack

No architecture uses dbt yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2016–2026

In 2015 and 2016 a team at RJMetrics wrote down a viewpoint: analytics teams had “a workflow problem”, and the practices software engineers use, such as version control, testing and separate environments, should apply to analytics code. Cloud warehouses such as Redshift could now hold raw data and do the heavy lifting, but the SQL that turned it into reports lived in scattered scripts and BI tools.

Tristan Handy started Fishtown Analytics in Philadelphia in 2016 as a consulting business. dbt’s first commit landed that March, and Handy and co-founder Drew Banin released it as a productivity tool for the consulting work. It was narrow on purpose: “dbt is the T in ELT”, Handy wrote in 2017. It doesn’t move data; it turns select statements into tables inside the warehouse, in the right order. A community grew around its Slack channel, and in June 2021 the company renamed itself dbt Labs while raising $150 million. dbt 1.0 followed that December.

In January 2025 dbt Labs bought SDF Labs, whose Rust SQL compiler became the Fusion engine, announced that May under the source-available Elastic License. After the merger with Fivetran closed on 1 June 2026, the Rust engine became dbt v2.0 under Apache 2.0 in September 2026.

Why it’s built this way

Models are only select statements
Analysts already knew SQL. dbt generates the create, insert and merge statements for each warehouse from the model’s materialization, so the model holds only the logic.
ref() instead of hard-coded table names
References give dbt the dependency graph, so it can build in order and draw lineage. The same code also points at a developer’s schema or production depending on the environment.
Transform inside the warehouse
Cloud warehouses were powerful enough to do the work, so dbt stayed out of extraction and loading and let the warehouse compute everything.
Open source, controlled by its users
Handy wrote that “critical analytics infrastructure should be controlled by its users as open source software”. The core has stayed Apache 2.0; the 2025 Fusion engine’s Elastic License was dropped when its code became dbt v2.

Timeline

  1. 2016

    First dbt commit in March; Tristan Handy starts Fishtown Analytics

  2. 2017

    Handy describes dbt as “the T in ELT”

  3. 2021

    Renamed dbt Labs with a $150M round in June; dbt 1.0 in December

  4. 2025

    Buys SDF Labs, launches the Rust Fusion engine, agrees to merge with Fivetran

  5. 2026

    Merger completes in June; Rust dbt v2.0 ships under Apache 2.0 in September

Sources23 · facts checked 6 October 2026

Improve this page on GitHub