How to Use dbt build: Syntax, Example, and Tips
Use the
dbt build command to run your dbt models, tests, snapshots, and seeds all at once. It simplifies your workflow by combining multiple steps into a single command that builds your entire project.Syntax
The basic syntax of dbt build is simple and can include optional flags to customize the build process.
dbt build: Runs models, tests, snapshots, and seeds in the default order.--select <selector>: Run build only on selected models or resources.--exclude <selector>: Exclude specific models or resources from the build.--full-refresh: Forces snapshots and seeds to refresh fully.
bash
dbt build [--select <selector>] [--exclude <selector>] [--full-refresh]
Example
This example runs dbt build on the entire project, building all models, running tests, refreshing snapshots, and loading seeds.
bash
dbt build
Output
Running with dbt=1.4.0
Found 5 models, 3 tests, 1 snapshot, 2 seeds
19:00:00 | Concurrency: 4 threads
19:00:00 |
19:00:00 | 1 of 5 START model my_project.my_model........................ [RUN]
19:00:05 | 1 of 5 OK created model my_project.my_model.................... [SUCCESS 5s]
...
19:00:30 | 3 of 3 START test not_null_my_model_id....................... [RUN]
19:00:32 | 3 of 3 PASS not_null_my_model_id............................ [PASS 2s]
...
19:00:40 | 1 of 1 START snapshot my_snapshot............................ [RUN]
19:00:45 | 1 of 1 OK refreshed snapshot my_snapshot..................... [SUCCESS 5s]
...
19:00:50 | 2 of 2 START seed my_seed.................................... [RUN]
19:00:52 | 2 of 2 OK loaded seed my_seed............................... [SUCCESS 2s]
Completed successfully
Common Pitfalls
Some common mistakes when using dbt build include:
- Running
dbt buildwithout understanding it runs tests and snapshots, which can take longer than justdbt run. - Not using selectors to limit the build scope, causing unnecessary work.
- Forgetting to use
--full-refreshwhen you want to reload snapshots or seeds fully.
Example of wrong and right usage:
bash
# Wrong: runs full build every time even if only one model changed
dbt build
# Right: run build only on specific model to save time
dbt build --select my_model
# Right: force full refresh of snapshots
dbt build --full-refreshQuick Reference
| Command | Description |
|---|---|
| dbt build | Run models, tests, snapshots, and seeds in order |
| dbt build --select | Run build only on selected models or resources |
| dbt build --exclude | Exclude specific models or resources from build |
| dbt build --full-refresh | Force full refresh of snapshots and seeds |
Key Takeaways
Use
dbt build to run models, tests, snapshots, and seeds in one command.Use selectors with
--select or --exclude to control what runs.Add
--full-refresh to reload snapshots and seeds fully when needed.Running
dbt build can take longer than dbt run because it includes tests and snapshots.Use
dbt build to simplify your dbt workflow by combining multiple steps.