Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disclaimer on state modified behavior change #6357

Merged
merged 10 commits into from
Oct 25, 2024
9 changes: 8 additions & 1 deletion website/docs/reference/global-configs/behavior-changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ id: "behavior-changes"
sidebar: "Behavior changes"
---

import StateModified from '/snippets/_state-modified-compare.md';

Most flags exist to configure runtime behaviors with multiple valid choices. The right choice may vary based on the environment, user preference, or the specific invocation.

Another category of flags provides existing projects with a migration window for runtime behaviors that are changing in newer releases of dbt. These flags help us achieve a balance between these goals, which can otherwise be in tension, by:
Expand Down Expand Up @@ -83,13 +85,18 @@ Set the `skip_nodes_if_on_run_start_fails` flag to `True` to skip all selected r

### Source definitions for state:modified

:::info

<StateModified features={'/snippets/_state-modified-compare.md'}/>

:::

The flag is `False` by default.

Set `state_modified_compare_more_unrendered_values` to `True` to reduce false positives during `state:modified` checks (especially when configs differ by target environment like `prod` vs. `dev`).

Setting the flag to `True` changes the `state:modified` comparison from using rendered values to unrendered values instead. It accomplishes this by persisting `unrendered_config` during model parsing and `unrendered_database` and `unrendered_schema` configs during source parsing.


### Package override for built-in materialization

Setting the `require_explicit_package_overrides_for_builtin_materializations` flag to `True` prevents this automatic override.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: "Caveats to state comparison"
---

import StateModified from '/snippets/_state-modified-compare.md';

The [`state:` selection method](/reference/node-selection/methods#the-state-method) is a powerful feature, with a lot of underlying complexity. Below are a handful of considerations when setting up automated jobs that leverage state comparison.

### Seeds
Expand Down Expand Up @@ -48,6 +50,8 @@ dbt test -s "state:modified" --exclude "test_name:relationships"

To reduce false positives during `state:modified` selection due to env-aware logic, you can set the `state_modified_compare_more_unrendered_values` [behavior flag](/reference/global-configs/behavior-changes#behavior-change-flags) to `True`.

<StateModified features={'/snippets/_state-modified-compare.md'}/>

</VersionBlock>

<VersionBlock lastVersion="1.8">
Expand Down
3 changes: 3 additions & 0 deletions website/snippets/_state-modified-compare.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
The state directory needs to be built with dbt v1.9 or higher, or [Versionless](/docs/dbt-versions/versionless-cloud) dbt Cloud along with setting `state_modified_compare_more_unrendered_values` to true within your dbt_project.yml.

Check warning on line 1 in website/snippets/_state-modified-compare.md

View workflow job for this annotation

GitHub Actions / vale

[vale] website/snippets/_state-modified-compare.md#L1

[custom.Typos] Oops there's a typo -- did you really mean 'v1.9'?
Raw output
{"message": "[custom.Typos] Oops there's a typo -- did you really mean 'v1.9'? ", "location": {"path": "website/snippets/_state-modified-compare.md", "range": {"start": {"line": 1, "column": 48}}}, "severity": "WARNING"}
runleonarun marked this conversation as resolved.
Show resolved Hide resolved

If the state directory is built with an older dbt version or if the `state_modified_compare_more_unrendered_values` behavior change flag was either not set or set to `false`, you need to rebuild the state directory to avoid false positives during state comparison with `state:modified`.
runleonarun marked this conversation as resolved.
Show resolved Hide resolved
Loading