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-refreshis invoked. - If 
full_refresh:false— the configured resources(s) will not full-refresh whendbt run --full-refreshis 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-refreshflag 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