Summary
Customers using Snowplow’s Unified DBT package may encounter an issue where the snowplow_unified_incremental_manifest
table is unexpectedly reset during runs that should have excluded incremental models.
This article documents a known compatibility issue between DBT Core and the Snowplow Unified model setup that can result in manifest corruption, leading to partial or missing data in downstream derived tables.
Affected Products
- DBT Core ≥ 1.7.0
- Snowplow Unified DBT Model
- Snowplow Utils v0.17.2
Symptoms
models_matched_from_manifest
evaluates to zero despite valid models being selected.snowplow_unified_incremental_manifest
table is unexpectedly recreated.- Incremental logic is skipped, resulting in missing or overwritten data.
- This occurs even when using the
--exclude tag:snowplow_unified_incremental
flag. snowplow__allow_refresh: false
setting is not respected in certain conditions.
Root Cause
This issue stems from a DBT Core bug (dbt-labs/dbt-core#9789), where partial parsing creates an outdated or inaccurate model manifest. As a result, dbt does not recognize that some models were previously run or tagged correctly, leading to an incorrect value for models_matched_from_manifest
.
This caused macros such as get_run_limits.sql
in the snowplow-utils
package to interpret the manifest as empty, thereby triggering a rebuild of the snowplow_unified_incremental_manifest
table — even when it shouldn't.
Workaround / Resolution
To prevent the issue, disable partial parsing during your dbt runs:
dbt run --no-partial-parse
This ensures dbt fully rebuilds its internal model manifest and correctly detects model tags and dependencies.
Additional Best Practices
- Always pin both your
snowplow_utils
anddbt
versions explicitly in yourpackages.yml
anddeployment environment
. - Monitor the size of the
snowplow_unified_incremental_manifest
table to detect resets or empty states. - Add logging to capture values such as
models_in_run
andmodels_matched_from_manifest
during test runs. - Consider disabling
--partial-parse
in production pipelines when making structural changes or upgrades to dbt packages.
Support Scope
Note that Snowplow does not maintain the dbt-core framework and cannot guarantee fixes for upstream bugs. All assistance provided in this area is on a best-effort basis.
For persistent dbt issues outside of Snowplow models, we recommend contacting dbt Support directly.