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. |