Skip to main content
Data Governance

How to Set Up Data Quality Checks in a Lakehouse

A lakehouse with no data quality checks does not fail loudly — it fails quietly, serving wrong numbers with total confidence. The checks that prevent that are not one gate at the end; they are tests at each layer, catching bad data where it enters.

Amit Kumar Singh - Technology Consulting Partner at MyData Insights

Technology Consulting Partner · MyData Insights

14+ years in industrial data · Former Accenture & EY · India, GCC, SEA

16 September 2026 · 9 min read

The bottom line

A lakehouse fails quietly: without data quality checks it serves confident wrong numbers. The fix is tests at each medallion layer, not one gate at the end — validate at bronze (did the data arrive and match its schema), at silver (nulls, ranges, referential integrity, duplicates), and at gold (business-rule and reconciliation checks). Decide per check whether a failure quarantines the batch or just alerts, monitor quality as a first-class metric, and give the results an owner. The goal is to catch bad data where it enters, before it reaches a report someone trusts.

The Lakehouse Fails Quietly

A pipeline that crashes is annoying but safe — you know something is wrong. The dangerous failure is the one that succeeds: the load runs, the report refreshes, and the numbers are wrong. A SKU changed pack size and the volume calculation is now nonsense; a source sent nulls where quantities should be; a duplicate doubled a total. Nothing errored. The dashboard is green and lying.

This is how a lakehouse loses trust. Not in a dramatic outage, but in a slow accumulation of quietly-wrong numbers that someone eventually notices, after which they stop trusting the platform and go back to their spreadsheet. The whole value of a governed lakehouse — one number everyone trusts — evaporates the first time it is confidently wrong.

Data quality checks are what prevent the quiet failure. They are not optional polish; they are what makes the trusted single source of truth actually trustworthy.

The dangerous failure is the one that succeeds: the load runs, the report refreshes, the numbers are wrong, and the dashboard is green and lying. Data quality checks prevent the quiet failure that erodes trust.

Checks at Each Layer, Not One Gate

The common mistake is to bolt one big validation step at the end, just before the data reaches Power BI. By then the bad data has flowed through every transformation, and finding it there tells you something is wrong without telling you where it entered. Checks belong at each layer of the medallion architecture, catching problems where they originate.

At the bronze layer (raw ingestion), check that the data arrived at all and matches its expected schema — the right columns, the right types, a plausible row count. At the silver layer (cleaned and joined), check the content: nulls where there should be values, out-of-range numbers, broken relationships, duplicates. At the gold layer (business-ready), check the business rules and reconciliation: does the total reconcile to the source system, does a governed metric fall in a sane range.

Layering the checks means a failure is caught early and located precisely. A schema break is caught at bronze before it corrupts anything downstream; a reconciliation break is caught at gold before it reaches a report. Each layer defends the next.

The Categories of Check That Matter

The useful checks fall into a handful of categories, and covering them is more valuable than any single sophisticated test. Schema checks: the data has the expected structure, columns and types. Completeness checks: required fields are not null, and the row count is in a plausible range (a load that returns ten rows when it usually returns ten thousand is a failure even if those ten rows are perfect).

Validity checks: values fall in sensible ranges (a negative quantity, a date in the future, a temperature outside physical bounds are all flags). Referential checks: keys resolve — every order references a real customer, every transaction a real SKU — so a join does not silently drop or duplicate rows. Uniqueness checks: no unexpected duplicates that would double a total. And freshness checks: the data is as recent as it should be, so a stalled feed is caught rather than silently serving yesterday.

Covering these categories at the appropriate layer catches the large majority of real-world data quality failures. They are not exotic; they are the systematic version of the sanity checks a good analyst does by eye, applied automatically at every load.

Six categories catch most real failures: schema, completeness, validity (ranges), referential integrity, uniqueness, and freshness. The systematic version of the sanity checks a good analyst does by eye — applied at every load.

Quarantine or Alert — Decide Per Check

A check that finds a problem has to do something, and the right response differs by check. Some failures should stop the data: a schema break or a reconciliation failure at gold means the data is not safe to serve, so the batch is quarantined — held out of the gold layer, not published — and someone is alerted. Better a delayed report than a wrong one.

Other failures should flag but not block: a small number of nulls in a non-critical field, a freshness warning on a secondary source. These raise an alert and are recorded, but the load proceeds, because stopping everything for a minor issue creates its own problem. The decision — quarantine or alert — is made per check based on how dangerous that failure is.

What matters is that the decision is deliberate. The failure mode to avoid is checks that detect problems and do nothing, or checks that block everything so aggressively that people disable them. Each check should have a defined action proportionate to the risk, so the system fails safe without failing constantly.

Monitor Quality as a Metric

Checks that run silently are half a system. Data quality should be a visible, monitored metric in its own right — a view of which checks passed and failed, on which loads, trending over time. This turns quality from an invisible background process into something someone watches and owns.

The value of monitoring is that it catches degradation before it becomes a crisis. A source that is slowly getting worse — more nulls each week, freshness slipping — shows up as a trend before it produces a visibly wrong report. And when a stakeholder asks "can I trust this number," a quality dashboard is the honest answer: here is what we check, here is the current state.

This also needs an owner — the data platform engineer or model owner whose job includes watching the quality metrics and acting on failures. A check with no owner is a log nobody reads. Monitoring plus ownership is what makes the quality system a living defence rather than a box that was ticked at build time.

So What — the Discipline

Setting up data quality in a lakehouse is a discipline, not a tool: checks at each medallion layer (schema at bronze, content at silver, business rules and reconciliation at gold); coverage of the categories that matter (schema, completeness, validity, referential, uniqueness, freshness); a deliberate quarantine-or-alert action per check; and quality monitored as a first-class metric with a named owner.

Built this way, bad data is caught where it enters, before it reaches a report someone trusts — and the lakehouse earns the "single source of truth" claim rather than quietly undermining it. The alternative is the confident wrong number that erodes trust in the whole platform.

On Microsoft Fabric this is implemented with the platform's own pipeline, notebook and monitoring capabilities, and where a team wants engineering-grade testing discipline, a transformation-testing tool can formalise it. But the tooling is secondary. The discipline — test at each layer, fail safe, monitor, own — is what keeps the lakehouse trustworthy.

Test at each layer, cover the categories that matter, fail safe per check, monitor quality as a metric with an owner. That discipline is what lets a lakehouse earn the "single source of truth" claim instead of quietly undermining it.

If your lakehouse has no systematic data quality checks and you have been caught out by a confidently wrong number, that is a trust problem worth fixing before it spreads. 30 minutes with Amit on your pipelines — where checks belong, what to test, and how to fail safe — and what a monitored quality layer would change. No slides. No pitch deck. No obligation to proceed.

Free Assessment

Where does your operation sit on the data maturity curve?

8 questions. 3 minutes. You get a scored breakdown across data infrastructure, analytics readiness, and automation potential — with a specific next step for your industry.

Data GovernanceMicrosoft FabricLakehouseData QualityMedallion ArchitectureData Platform

Your Data · Our Technology · Our Automation

Get practical insights every fortnight

Amit writes about Microsoft Fabric, Power BI, AI in operations, and digital transformation for manufacturing and supply chain leaders. Practitioner perspective - no fluff, no vendor spin.

No spam. Unsubscribe any time. Also on Substack.

FAQ

Common questions

Where should data quality checks run in a lakehouse?

At each layer of the medallion architecture, not as one gate at the end. Check at bronze (did the data arrive and match its schema), at silver (nulls, ranges, referential integrity, duplicates on the cleaned and joined data), and at gold (business-rule and reconciliation checks on the business-ready model). Layering the checks catches a problem where it enters and locates it precisely, so a schema break is caught before it corrupts anything downstream and a reconciliation break before it reaches a report.

What types of data quality check matter most?

Six categories: schema (right columns and types), completeness (required fields not null, plausible row count), validity (values in sensible ranges — no negative quantities or future dates), referential integrity (keys resolve to real customers and SKUs), uniqueness (no unexpected duplicates that double a total), and freshness (the data is as recent as it should be). Covering these at the appropriate layer catches the large majority of real-world data quality failures — they are the systematic version of an analyst's sanity checks.

Should a failed data quality check stop the pipeline?

It depends on the check. A dangerous failure — a schema break or a gold-layer reconciliation failure — should quarantine the batch (hold it out of the gold layer, do not publish) and alert someone, because a delayed report is better than a wrong one. A minor failure — a few nulls in a non-critical field, a freshness warning on a secondary source — should alert and be recorded but let the load proceed. Decide per check based on how dangerous that failure is, so the system fails safe without failing constantly.

Why is a lakehouse dangerous without data quality checks?

Because it fails quietly. Without checks, a load can succeed and a report refresh while the numbers are wrong — a changed SKU, unexpected nulls, a duplicate that doubles a total — with nothing erroring and the dashboard green and lying. This slowly erodes trust: people notice the wrong numbers, stop trusting the platform, and return to spreadsheets. The whole value of a governed lakehouse — one number everyone trusts — depends on quality checks that catch bad data before it is served.

Related FAQs

Questions operations leaders ask

Is this the challenge you're facing?

Book a 30-minute call. We'll look at your specific operation and tell you what's achievable - plainly and without slides.