Respond to a failing quality expectation
A quality expectation failed in production and bad data may be reaching consumers. Follow the data-quality-failure runbook: read the failure precisely, quantify it, then make the one decision that matters — block, quarantine, or pass-with-warning.
At a glance
| When | A quality expectation failed in production; A freshness or volume check alarmed, or consumers report wrong numbers |
|---|---|
| Where | Data Quality |
| Why | The decision on every failure is the same — block, quarantine or warn; getting it wrong ships bad data to consumers or pages people at 3am for nothing. |
Learning objectives
- Read a failing expectation precisely — column, rule, value
- Quantify a failure — how many rows and which ones
- Decide block vs quarantine vs pass-with-warning on evidence
What you need
- The failing test name and its output (dbt or Great Expectations)
- Read access to the failing table
- [object Object]
Steps
- Read the failing expectation precisely: which column, which rule, what value. (from runbook-data-quality-failure )
- Quantify: how many rows, and which ones (sample them). (from runbook-data-quality-failure )
- Decide: block, quarantine, or pass-with-warning. (from runbook-data-quality-failure )
- Quarantine the failing rows, publish the clean set, keep the bad set for reprocessing. (from runbook-data-quality-failure )
- If it is upstream, halt promotion and notify the producer. (from runbook-data-quality-failure )
- If it is a false positive, loosen the threshold with evidence. (from runbook-data-quality-failure )
Check yourself
- `dbt test --select fct_orders` isolates the failing test, and `SELECT * FROM fct_orders WHERE order_id IS NULL LIMIT 20;` samples the offending rows.
- Given an upstream null-rate jump, you halt promotion and notify the producer instead of loosening the threshold.
Worked example
Isolate the failing test — from runbook-data-quality-failure
dbt test --select fct_orders # see the failing test
Sample the offending rows — from runbook-data-quality-failure
SELECT * FROM fct_orders WHERE order_id IS NULL LIMIT 20;
The three-way decision — from runbook-data-quality-failure
Quarantine the failing rows, publish the clean set, keep the bad set for reprocessing.
If it is upstream, halt promotion and notify the producer.
If it is a false positive, loosen the threshold with evidence.
Sourced from
Security scan
Last sweep 2026-10-24: 0 finding(s), 0 marked as examples.
Common gotchas
- Loosening a threshold to silence an alarm is only right with evidence it was a false positive.
- Bad data that already reached consumers needs disclosure, not just a fix.
- Blocking on a warning-tier expectation turns small blips into outages.
Production considerations
- Tier expectations: critical blocks, warnings alert.
- Keep a quarantine table so a bad batch never ships.
Diagram
expectation failed
|
|- read precisely --> column + rule + value
|
|- quantify --> row count + samples
|
|- decide --> upstream --> halt promotion --> notify producer
| false positive --> evidence --> loosen threshold
| genuine --> quarantine rows --> publish clean set
Registry stats
| Verification | community · Oct 21, 2026 |
|---|---|
| Completeness | 81 |
| Trust multiplier | ×1.25 |
| Composite | 34.15 · adequate |
| Freshness | 3 days since last source check |
| Difficulty | beginner |
| Version | 0.1.0 |
| License | CC-BY-4.0 |
| Security flags | none |
Did this solve your problem?
Respond to a failing quality expectation