Every table is a SELECT statement in version control, and the tool works out the order to run them in.
Every table is a recipe card that names the other cards it needs. Lay them out and the order to cook in is obvious without anyone writing it down.
It's what turned warehouse SQL from a pile of scheduled scripts into something with version control, tests, CI and lineage.
dbt made transformation look like software. Each model is a file containing one SELECT; referencing another model with ref() both inserts the right table name and declares a dependency, so the DAG is inferred from the SQL rather than maintained by hand. From that one idea everything else follows: the tool can build models in dependency order, materialise each as a view, a table or an incremental table, run tests as queries that must return zero rows, and generate lineage documentation that is correct because it is derived. The layered convention — staging that renames and casts, intermediate that joins, marts that the business queries — is what keeps a thousand models navigable.
dbt turns each warehouse table into a version-controlled SELECT. ref() between models infers the dependency graph, so dbt knows the build order and the lineage without anyone drawing it. It adds materialisation strategies, tests that must return zero rows, and generated docs. The convention is staging → intermediate → marts, so business logic lives in one layer instead of thirty dashboards.
Introduction to DBT (Data Build Tool) | ETL Vs ELT — SleekData, 4:29