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
- If
full_refresh:true
— the configured resources(s) will full-refresh whendbt run --full-refresh
is invoked. - If
full_refresh:false
— the configured resources(s) will not full-refresh whendbt run --full-refresh
is invoked.
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.
full_refresh value | Behavior |
---|---|
true | The resource always full-refreshes, regardless of the presence or absence of the --full-refresh flag. |
false | The resource never full-refreshes, even if the --full-refresh flag is provided. |
none or omitted | The resource follows the behavior of the --full-refresh flag. If the flag is used, the resource will full-refresh; otherwise, it won't. |
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