dbt 37,942 (data build tool, from dbt Labs) is the T of ELT (ETL and ELT). It does not extract or load: the data must already be in the warehouse. You write models as SELECT statements with Jinja 15,439 templating; dbt compiles them to plain SQL for your engine, wraps each in the right CREATE TABLE, CREATE VIEW or MERGE, and runs them in dependency order inside the database. The engine does the work; dbt is a compiler and a runner.
Loading happens before dbt (COPY, Spark 129 , Debezium 317,608 in Orchestration and Pipelines) and scheduling around it: Airflow 129 calls dbt and retries it (Orchestration and Pipelines). Testing and documentation, by contrast, are built in.
dbt Core is Apache 2.0 licensed (github.com/dbt-labs/dbt-core (https://github.com/dbt-labs/dbt-core 13,961 )) and needs an adapter per engine. pip 21,050 install dbt-core dbt-postgres dbt-duckdb in a virtual environment installed dbt Core 1.12.5 (released 15 September 2026) with dbt-postgres 1.11.0 and dbt-duckdb 1.11.0, the versions used here. dbt Labs has also shipped v2, the Rust engine previewed as dbt Fusion, under new package names; dbt Fusion and SQLMesh covers it.