Skip to content

About dbt™ projects

A dbt™ project informs dbt™ about the context of your project and how to transform your data (build your data sets). By design, dbt™ enforces the top-level structure of a dbt™ project such as the dbt_project.yml file, the models directory, the snapshots directory, and so on. Within the directories of the top-level, you can organize your project in any way that meets the needs of your organization and data pipeline.

At a minimum, all a project needs is the dbt_project.yml project configuration file. dbt™ supports a number of different resources, so a project may also include:

Resource Description
Models Each model lives in a single file and contains logic that either transforms raw data into a dataset that is ready for analytics or, more often, is an intermediate step in such a transformation.
Snapshots A way to capture the state of your mutable tables so you can refer to it later.
Seeds CSV files with static data that you can load into your data platform with dbt.
Data Tests SQL queries that you can write to test the models and resources in your project.
Macros Blocks of code that you can reuse multiple times.
Docs Docs for your project that you can build.
Sources A way to name and describe the data loaded into your warehouse by your Extract and Load tools.
Exposures A way to define and describe a downstream use of your project.
Metrics A way for you to define metrics for your project.
Groups Groups enable collaborative node organization in restricted collections.
Analysis A way to organize analytical SQL queries in your project such as the general ledger from your QuickBooks.