Self-Assessment Quiz: Data Quality
Twenty questions. Aim for 16 or more. Questions 4, 11, and 18 are the ones this whole chapter exists for.
Question 1
Bad data is worse than no data because:
- A. It is harder to fix
- B. A failure costs a bounded delay borne by someone who can escalate; a lie costs an unbounded error borne by people downstream of everyone who could have caught it
- C. It uses more storage
- D. Failures are rarer
Question 2
Of the five Kestrel incidents in §23.1, how many were detected by a pipeline failure?
- A. All five
- B. Three
- C. One
- D. None — every one had every job green
Question 3
Which quality dimension cannot be tested directly?
- A. Completeness
- B. Uniqueness
- C. Accuracy
- D. Timeliness
Question 4
The test for whether a check measures the data rather than the pipeline:
- A. Does it query a table?
- B. Can it fail while the pipeline is completely healthy?
- C. Is it written in SQL?
- D. Does it run after the load?
Question 5
"The row count increased" as a data quality check:
- A. Is sufficient
- B. Cannot distinguish growth from duplication — Chapter 1's incident increased the row count for 31 nights
- C. Only works on facts
- D. Is equivalent to a volume floor
Question 6
A volume floor should be set:
- A. Just below the expected value
- B. Far below the expected value — the aim is catching zero, not catching low
- C. At the historical minimum
- D. At zero
Question 7
A relationships test passes when unmatched keys resolve to -1 because:
- A. The test is broken
- B.
-1is a real row in the dimension - C. Nulls are excluded
- D. It only checks the first 100 rows
Question 8
Which of the six assertions is nine lines of YAML and the highest-value test in this book?
- A. Freshness
- B. Distribution
- C. The grain test
- D. A business rule
Question 9
dbt tests cannot:
- A. Check uniqueness
- B. Validate data before it lands in the warehouse
- C. Run in CI
- D. Fail a build
Question 10
A Great Expectations profiler generates expectations that:
- A. Are always correct
- B. Encode the data rather than the contract
- C. Cannot be edited
- D. Only cover nulls
Question 11
A test that has passed for eight months and cannot fail:
- A. Is good news
- B. Dilutes a pass rate people read as evidence, and occupies the slot a real test would fill
- C. Should be run more often
- D. Proves the data is clean
Question 12
Testing early is preferred because:
- A. It is faster
- B. A bad row gets more expensive as it moves
- C. Sources are smaller
- D. dbt requires it
Question 13
And yet a mart test is often worth more than a source test because:
- A. Marts are larger
- B. A mart test's coverage is the whole lineage above it; a source test's is one table
- C. Marts run more often
- D. Sources cannot be tested
Question 14
A threshold that fires on Black Friday:
- A. Is correctly tuned
- B. Gets disabled before Cyber Monday and is never re-enabled
- C. Should be raised for one day
- D. Is a distribution test
Question 15
The metric that tells you a threshold is wrong is:
- A. Its failure rate
- B. Whether anyone has muted it
- C. Its runtime
- D. Its age
Question 16
Anomaly detection cannot see:
- A. Sudden spikes
- B. A defect that has been present since before its baseline
- C. Null rates
- D. Schema changes
Question 17
A quarantine table without a monitored count, an owner, an idempotent replay path, and a retention decision is:
- A. A safety mechanism
- B.
WHERE quality_is_badwith extra steps - C. Best practice
- D. A dead-letter queue
Question 18
A muted check should not count toward coverage because:
- A. It might be deleted
- B. Coverage answers "would we find out?", and during a mute the answer is no
- C. Mutes are rare
- D. It slows the build
Question 19
When a mute's duration cannot be parsed, the safest default is:
- A. Mute indefinitely
- B. Reject the command and explain the accepted formats
- C. Mute for 30 days
- D. Silently ignore the mute
Question 20
A test's dominant cost is:
- A. Compute — Kestrel's 313 tests cost $292 a year
- B. Attention, pass-rate dilution, alert fatigue, maintenance, and the test you did not write instead
- C. Storage
- D. Review latency
Answer Key
1. B — §23.1. And the version that changes a budget is arithmetic: 0.5% × $182.0M = $910,000 a year.
2. D — §23.1. Not one was detected by a pipeline failure, because in not one did a pipeline fail.
3. C — §23.2. Reconcile against an independent source, compute it twice by different paths, or unit-test the logic. Pretending an assertion about shape reaches truth is the central dishonesty of the tooling.
4. B — §23.3. If it cannot, it is a pipeline check with a data-shaped name — worse than no check, because it occupies the slot and inflates a pass rate.
5. B — §23.3. A monotonic check on an append-only table is blind to exactly the failure that happened.
6. B — §23.4. Kestrel's average is 17,753 and the floor is 3,000. A tight bound pages someone every public holiday and is disabled within a month.
7. B — §23.4 and Chapter 19 Case Study 2. Which is why unknown-member volume needs its own assertion.
8. C — §23.4. Chapter 20 Case Study 1's 3.4× overstatement is this test not existing.
9. B — §23.5. A CSV on SFTP, a Kafka message, an API response — all outside dbt's reach, and all places where catching a problem is cheaper.
10. B — §23.5. Chapter 17's distinction exactly: a schema describes what arrived, a contract describes what was agreed.
11. B — §23.10. And the failure mode of keeping them all is alert fatigue, which ends with the whole suite ignored.
12. B — §23.6.
13. B — §23.6's 📏 callout. Both, and weight toward the mart when the budget is tight.
14. B — §23.7. Kestrel's traffic varies 6.28× between an average day and Black Friday.
15. B — §23.7. And mutes are usually invisible, which is why they need auditing.
16. B — §23.8. Chapter 20 Case Study 2's eight months of 0.037% loss is exactly that shape: a detector trained on it learns that 0.037% is normal.
17. B — §23.9 and Case Study 1. Kestrel's held 41,900 rows, of which 38,104 were valid orders worth $1,070,341.
18. B — Case Study 2's 📐 callout. The jumpiness is the feature. And the general form: measure whether a control is operating, not whether it exists.
19. B — Case Study 2. A refusal at 04:12 is annoying; an indefinite mute at 04:12 is 511 days.
20. B — §23.10. The compute figure in A is real and is why nobody should decline a test on compute grounds.
Topic map
| Missed | Reread |
|---|---|
| 1, 2 | §23.1 — why bad data is worse |
| 3 | §23.2 — the six dimensions |
| 4, 5 | §23.3 — pipeline versus data |
| 6, 7, 8 | §23.4 — the six assertions |
| 9, 10 | §23.5 — dbt versus a platform |
| 12, 13 | §23.6 — where a test lives |
| 14, 15, 19 | §23.7 and Case Study 2 — thresholds and mutes |
| 16 | §23.8 — anomaly detection |
| 17 | §23.9 and Case Study 1 — bad rows |
| 11, 20 | §23.10 — what a test costs |
| 18 | Case Study 2 — coverage versus existence |