[CT-10785] Microbatch models should respect full_refresh
model config
#10788
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #10785
Problem
In dbt-core, it is generally expected that values passed via CLI flags take precedence over model level configs. However,
full_refresh
on a model is an exception to this rule, where in the model config takes precedence. This config exists specifically to prevent accidental full refreshes of large incremental models, as doing so can be costly. It is actually best practice to setfull_refresh=False
on incremental models.Prior to this PR, for microbatch models, the above was not happening. The CLI flag
--full-refresh
was taking precedence over the model configfull_refresh
. That meant that if--full-refresh
was supplied, then the microbatch model would full refresh even iffull_refresh=False
was set on the model. This PR solves that problem.Solution
Update
_is_incremental
to prefer themodel.config.full_refresh
value over theRuntimeConfig.args.FULL_REFRESH
value provided by CLI flags.Checklist