Row counts are not vanity metrics

A short case for publishing expected versus loaded row counts as a contract between extractors and warehouse consumers.

When Service Rivercore opens an assessment, we ask a blunt question: after last night’s load, can an operator say whether the fact table received roughly the right number of rows?

What “roughly right” means

For a retail sales fact, yesterday’s row count should sit near a trailing average, adjusted for known closures. For an event stream, counts should track upstream acknowledgements. Exact equality is rare; unexplained drops of 30% overnight are not.

A minimal contract

  • Extract stage emits source_rows.
  • Load stage emits loaded_rows and rejected_rows.
  • A gate fails the publish step when the ratio leaves an agreed band — and pages a human with both numbers.

Teams sometimes fear false alarms. In practice, tuning the band over two weeks of history produces fewer pages than the silent undercounts they lived with before.

Architecture reviews often place this contract next to schema versioning; both are cheap compared with a week of disputed finance packs.

← Back to Field Notes