Data & Analytics
A Databricks materialized view breaks after an upstream column appears
Spot query-schema drift in dbt materialized views before a refresh failure surprises downstream users.
October 29, 2026
A Databricks source gains a column. A dbt materialized view defined with unchanged select * now infers a different column list from the view created earlier, and its refresh can fail with an incompatible schema error. An open dbt issue describes this exact path for Fusion’s Databricks adapter. The SQL file did not change, but the query’s output contract did.
Detect the change before refresh
Compare the ordered column names inferred from the current query with those stored in the existing materialized view. Include upstream schema snapshots in the deployment review for models that use select *. The issue explicitly distinguishes column-name drift from type-label differences; do not treat every cosmetic type spelling difference as a reason to replace a view. Identify the downstream dashboards and contracts that consume the column list.
Choose a controlled response
The dbt issue proposes that on_configuration_change: apply take a replacement path when ordered names differ, while continue reports a skipped change and fail raises an error. These are expected behaviors in an open implementation issue, not a guarantee that every installed adapter version acts this way. Check your package version and test it with a small fixture. Replacement may have operational and access consequences; review them before enabling an automatic path.
Reduce the blast radius of upstream volatility
For business-facing models, prefer explicit projections when a new upstream field should not silently enter the contract. A recent practitioner discussion likewise separates flexible raw ingestion from more stable downstream contracts. Set an alert on unexpected columns and decide whether each belongs in the curated view. The dbt Databricks configuration reference is the source for adapter behavior; use it with the installed version rather than assuming a general dbt rule.
Adovo’s view
An unchanged query is not an unchanged contract when it selects everything. Make column drift visible at the boundary between raw data and trusted reporting. A refresh should fail loudly or change deliberately; it should not surprise consumers with a new shape.
