full_refresh
The full_refresh
config allows you to control whether a resource will always or never perform a full-refresh. This config overrides the --full-refresh
command-line flag.
- Models
- Seeds
dbt_project.yml
models:
<resource-path>:
+full_refresh: false | true
models/<modelname>.sql
{{ config(
full_refresh = false | true
) }}
select ...
dbt_project.yml
seeds:
<resource-path>:
+full_refresh: false | true
Description
The full_refresh
config allows you to optionally configure whether a resource will always or never perform a full-refresh. This config is an override for the --full-refresh
command line flag used when running dbt commands.
You can set the full_refresh
config in the dbt_project.yml
file or in a resource config.
full_refresh value | Behavior |
---|---|
If set to true | The resource always performs a full refresh, regardless of whether you pass the --full-refresh flag in the dbt command. |
If set to false | The resource never performs a full refresh, regardless of whether you pass the --full-refresh flag in the dbt command. |
If set to none or omitted | The resource follows the behavior of the --full-refresh flag. If the flag is used, the resource will perform a full refresh; otherwise, it will not. |
Note
- The
--full-refresh
flag also supports a short name,-f
. - The
should_full_refresh()
macro has logic encoded.
Usage
Incremental models
Seeds
The columns of my seed changed, and now I get an error when running the `seed` command, what should I do?
Recommendation
Set full_refresh: false
for models of especially large datasets, which you would never want dbt to fully drop and recreate.
Reference docs
0