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. -1 is 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_bad with 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