dbt Fundamentals
dbt (data build tool) is a transformation framework that lets analytics engineers write modular SQL models, test their outputs, and document lineage. It runs inside the data warehouse, turning raw data into trusted, version-controlled datasets through a software engineering workflow.
itData engineering and analytics | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: dbt Fundamentals
dbt is the bit of the data stack that turns already-loaded data into models people can inspect, test, and reuse. It is not an extractor with a very stern expression, and it is not a dashboard wearing a SQL hat. It occupies the awkward but valuable middle ground: after data arrives in a platform, before somebody asks a report a question with consequences.
The unit of work is a model, usually a SQL select statement in a file. dbt compiles that statement and asks the data platform to run it. A materialization decides what remains afterward, such as a view that reruns its query or a table that stores a rebuilt result. The platform still supplies the SQL dialect, permissions, compute, and bill. dbt is not secretly a warehouse in a trench coat.
The memorable part is the DAG, the directed acyclic graph of dependencies. ref says that one project resource needs another. source says that a model depends on data an outside loading process delivered. Those references let dbt build in order, select related work, and draw lineage. A project with hardcoded relations can still run, much as a bridge can remain standing while the inspection paperwork is on fire, but dbt cannot see the missing connection.
Tests and descriptions are not decorative safety cones. A data test looks for records that violate an assertion, such as a missing key or an unexpected duplicate. No failing rows means the assertion passed. That proves only the assumption you wrote down, which is useful but not a licence to stop thinking about what a customer, order, or revenue row actually means.
Start with the Introduction when you need the whole arrangement. Use Slides for the flow from source to staging model to data product. Keep the Cheatsheet nearby when choosing a command, materialization, or first diagnostic. The Practice Reference and exercise turn the graph into a small working project. The Reference tab is where the current engine and platform details live, because software has an alarming habit of continuing to change after diagrams are printed.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.getdbt.com/docs/introduction
Supports
- dbt transforms loaded data inside a supported data platform for downstream analytics, operations, and AI
- The dbt framework includes a language and an engine
- The language includes SQL, Jinja, YAML configuration, and tests
- Engines compile and execute the transformation graph and produce metadata
- Current distinctions among dbt Core version one, dbt Fusion, local development tools, and the managed dbt platform
- Software engineering practices, including version control, modularity, testing, documentation, and continuous integration
- https://docs.getdbt.com/docs/build/projects
Supports
- A dbt project is anchored by dbt_project.yml and may contain models, snapshots, seeds, data tests, macros, docs, sources, and other resources
- Model, source, seed, snapshot, macro, and documentation definitions
- Project configuration controls resource paths and other behavior
- https://docs.getdbt.com/docs/build/sql-models
Supports
- A SQL model is a select statement, normally one per file in the models directory
- dbt wraps a model query to create a relation in the target data platform
- Views are the default materialization unless configuration changes the behavior
- Models use the SQL dialect of the connected data platform and execute there
- Compiled and executed SQL is available for inspection
- https://docs.getdbt.com/reference/dbt-jinja-functions/ref
Supports
- ref returns a relation for a model, seed, or snapshot
- ref compiles to a database object name and creates a dependency
- Dependencies let dbt build the graph in order
- https://docs.getdbt.com/docs/build/sources
Supports
- Sources name and describe data loaded by extract and load tools
- The source function compiles to a full table name and creates a dependency
- Sources support descriptions, data tests, and freshness calculation
- https://docs.getdbt.com/docs/build/data-tests
Supports
- Data tests are assertions about models and other project resources
- A data test selects failing records and passes when no failing rows return
- Built-in generic data tests cover unique, not null, accepted values, and relationships assertions
- Singular and generic data test definitions
- https://docs.getdbt.com/docs/build/documentation
Supports
- dbt generates project documentation as a website
- Generated documentation can include model code, the DAG, tests, warehouse metadata, and descriptions
- Descriptions can document models, columns, sources, and other resources
- https://docs.getdbt.com/reference/commands/build
Supports
- dbt build processes models, tests, seeds, snapshots, and supported user-defined functions in DAG order
- Build writes manifest and run results artifacts
- Error-level upstream test failures can skip dependent resources
- https://docs.getdbt.com/docs/build/materializations
Supports
- Materializations control how models persist in the data platform
- Built-in view, table, incremental, ephemeral, and materialized view concepts
- Materialization tradeoffs used in the slides and cheatsheet
- https://docs.getdbt.com/reference/dbt-commands
Supports
- Command roles summarized in the cheatsheet, including run, test, build, compile, docs, debug, and list
- Practice reference commands for checking configuration, parsing, selection, compilation, tests, builds, and generated documentation
- https://docs.getdbt.com/reference/node-selection/syntax
Supports
- Node selection targets project resources and their graph relationships
- Link rationale for graph-aware development and continuous integration scope
- https://docs.getdbt.com/guides
Supports
- Official data-platform-specific quickstarts as the recommended first hands-on step
- Exercise setup for an isolated development target and sample data
- https://docs.getdbt.com/docs/deploy/deployments
Supports
- Link rationale for progressing from development into environments, job scheduling, and production operation
- https://docs.getdbt.com/docs/core/about-core
Supports
- dbt Core is an open-source engine for compiling and running dbt projects
- https://www.getdbt.com/product/dbt
Supports
- The managed dbt platform provides development and operating capabilities around dbt projects
- https://sqlmesh.readthedocs.io/en/stable/integrations/dbt/
Supports
- SQLMesh supports dbt project integration and uses dbt project connection configuration
- https://cloud.google.com/dataform/docs/dependencies
Supports
- Dataform declares workflow dependencies through ref and supports assertions on transformed tables
- https://docs.coalesce.io/docs
Supports
- Coalesce Transform combines a visual DAG, code, testing, standards, and lineage for data transformation workflows
- https://www.getdbt.com/blog/fishtown-analytics-rebrands-as-dbt-labs-closes-150m-to-develop-open-source-analytics-engineering-software
Supports
- dbt launched in 2016 and Fishtown Analytics rebranded as dbt Labs in June 2021
- https://www.getdbt.com/blog/on-two-years-of-dbt
Supports
- dbt 0.10 introduced package management for reusable analytic code in 2018
- https://github.com/dbt-labs/dbt-core/blob/main/docs/roadmap/2025-05-new-engine-same-language.md
Supports
- dbt Core has supported source freshness checks since version 0.13 in 2019
- https://www.getdbt.com/blog/dbt-semantic-layer
Supports
- dbt announced its Semantic Layer public preview in October 2022
- https://www.getdbt.com/blog/build-centralize-and-deliver-consistent-metrics-with-the-dbt-semantic-layer
Supports
- dbt announced general availability of the MetricFlow-powered Semantic Layer at Coalesce 2023
- https://www.getdbt.com/blog/dbt-mesh-is-now-generally-available
Supports
- dbt Mesh became generally available for dbt Cloud Enterprise in June 2024
- https://www.getdbt.com/blog/get-to-know-the-new-dbt-fusion-engine-and-vs-code-extension
Supports
- dbt announced the public beta of the Fusion engine and VS Code extension in May 2025
- https://www.getdbt.com/blog/data-testing
Supports
- Generic tests cover structural assumptions while domain-specific tests are required for domain-specific conditions
