Data & Analytics
A dbt Fusion null override can leave an inherited DELETE merge action
Audit effective dbt merge configuration before a model-level null override is trusted to remove a destructive action.
October 29, 2026
A project sets a folder-level merge_actions_explicit value that includes WHEN MATCHED THEN DELETE. A model tries to clear it with null, but the inherited action remains in Fusion’s effective configuration. The open dbt issue reproduces this difference from dbt-databricks and notes that an empty string currently acts as an opt-out. The practical risk is a model owner believing a deletion rule was removed when the compiled model still carries it.
Inspect what the model will execute
Search project and folder configuration for explicit merge actions, then inspect the model’s effective configuration in manifest.json and the compiled merge SQL. Review every model inheriting that folder scope, not just the one with an override. A code review of the local model file alone cannot establish runtime behavior. Capture the dbt/Fusion and adapter versions with the evidence; this issue is version-specific and still open.
Test the override in a disposable dataset
The issue reports that merge_actions_explicit: '' produces generated clauses where null does not. Treat this as a reported workaround, not a universal configuration policy. Run a minimal nonproduction model with matched, unmatched, and would-be-deleted rows; compare before and after. Confirm the executed SQL and row-level outcome before changing a production job. The dbt Databricks reference explains the incremental merge strategy and its configuration surfaces.
Add a release guard for destructive clauses
If your models permit explicit delete actions, require a review of effective compiled configuration whenever hierarchy or adapter versions change. A test can fail when a model that should retain rows compiles WHEN MATCHED THEN DELETE. Keep rollback data for the first production run after a config change. The aim is to make the destructive path visible before a scheduled job touches customer records.
Adovo’s view
The source file is an intention; the compiled merge is the contract with the data. For destructive actions, review that contract directly. A single inherited clause can outweigh a page of reassuring configuration.
