Debugging Data

The dashboard is wrong. Working from a number back to its source through models, joins, partitions and ingestion — and the anti-patterns that made it wrong in the first place.

Where Did This Number Come From?

The domain's closing question. Ten things you have to be able to answer about a figure before you are entitled to act on it — and what it means when you cannot answer one.

Q · A tile on the executive dashboard reads 1,245,892. Which model produced it, at what grain, from which authoritative source, through which transformations — and could you reproduce it tomorrow?
Two Dashboards, Two Numbers

Finance and growth disagree about revenue. Both queries are correct. This is almost always a governance failure wearing the costume of a bug.

Q · Two teams report yesterday's revenue as 1,245,892 and 1,318,440 from the same warehouse, and both SQL statements are correct. Which one is wrong?
Missing Rows

The report is low, no task failed, and the source database still has every record. Working from a shortfall back to the arrow that dropped it.

Q · Yesterday shows materially fewer orders than the equivalent day last week, every DAG task is green, and the source system has all of them. Where did the rows go?
Duplicate Rows

Revenue is up, nothing launched, and every check is green except uniqueness. Inflation is the failure people question least and notice last.

Q · A measure jumped overnight with no product change, no marketing push and no failed task. Which of the five duplication mechanisms produced it, and why did only one check notice?
Stale Dashboards

A complete, plausible, internally consistent number for a day that ended two days ago. The failure mode that looks most like health.

Q · The dashboard renders a full set of numbers for "yesterday" and nothing on the page says when the data was last updated. How would anyone know it is Tuesday's?
The Pipeline Succeeded. The Data Is Wrong.
▶ lab

The domain's thesis, turned into a diagnosis. A green DAG proves the code ran; eight faults, six checks and the distinct fingerprint each one leaves are what prove anything else.

Q · Every task in last night's run exited zero, inside its timeout, with no retries. What does that prove about the rows in the serving table?
Data Engineering Anti-Patterns
▶ lab

Sixteen decisions that were reasonable when they were made and expensive by the time anyone noticed. Each one gets the argument for it before the argument against.

Q · Every one of these was chosen deliberately by a competent engineer under a real constraint. What changed between then and the day it became the reason nobody trusts the platform?
Data Platform Anti-Patterns
▶ lab

The six failures that are organisational rather than technical. None of them is visible in a query plan, all of them are cheap in a small company, and each is what a large one means when it says the data cannot be trusted.

Q · Nothing in the platform is technically wrong, every pipeline works, and nobody trusts the data. What is the organisation doing that no engineering fix will reach?