Skip to main content
Data Engineering

How Snowflake Teams Identify Missing, Duplicated or Late-Arriving Records

The data looks complete until someone reconciles it against the source and finds a gap, a double-count, or a batch that never fully landed. Catching missing, duplicate and late records is a job for scheduled checks, not month-end surprise.

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

15 October 2026 · 9 min read

The bottom line

Three data-quality failures quietly break trust in a Snowflake estate: missing records (a batch that never fully landed), duplicates (a load re-run that double-inserted), and late-arriving records (data that showed up after the period was reported). None throws an error; each surfaces weeks later when a number does not reconcile. The way to catch them is scheduled checks, not manual spot-checks: reconcile row counts and control totals against the source to catch gaps, run uniqueness checks on business keys to catch duplicates, run freshness and arrival-lag checks to catch late or stalled feeds, and alert when any breach a tolerance. Snowflake streams help by tracking what actually changed, and an idempotent MERGE on the business key prevents duplicates at load time. Data quality is a monitoring discipline — the checks run on a schedule and tell you the morning something drifts, not at month-end.

Three Quiet Failures

A Snowflake estate rarely fails loudly on data quality. It fails quietly, in three recurring ways. Records go missing when a batch partially fails or a source feed drops and nobody notices. Records duplicate when a load is re-run and inserts the same rows again. And records arrive late, after the period they belong to has already been reported, so the number was "final" before the data was complete.

What these share is invisibility. The load succeeds, the pipeline goes green, the dashboard renders. The gap, the double-count or the late batch is discovered weeks later when someone reconciles against the source and the numbers do not tie — usually at month-end, in front of finance, which is the worst possible moment.

Catching them is not about being more careful manually. It is about scheduled checks that run every time data lands and tell you the morning something drifts. Each of the three failures has a specific, cheap check that catches it.

Missing Records: Reconcile Counts and Totals

Missing data is caught by reconciliation. For each important table, compare the row count and key control totals — summed amounts, document counts, quantities — in Snowflake against the source system, on a schedule, and alert when they diverge beyond a tolerance. If the source has 10,000 orders for the day and Snowflake has 9,840, the gap is flagged the morning it happens, not at close.

Control totals matter as much as row counts. A load can have the right number of rows but the wrong total if some rows landed truncated or with nulls, so reconciling a summed amount against the source catches a class of problem a row count misses. Together, count plus total is a strong signal that the data is complete.

The reconciliation is cheap to build and is the single highest-trust check on the estate. "The Snowflake order count and total match the source to the row and the cent as of this morning" is a statement finance can rely on; discovering a gap weeks later is what erodes trust in the whole platform.

Reconcile row counts and control totals against the source on a schedule. A table can have the right row count and the wrong total — so check both, and catch the gap the morning it happens, not at month-end.

Duplicates: Uniqueness and Idempotency

Duplicates come from loads that re-run or re-ingest, and they are caught two ways: prevent them at load time, and detect them with checks. Prevention is a MERGE keyed on the business key rather than an append, so re-loading the same record updates the existing row instead of inserting a second — an idempotent load, where running twice leaves the table the same as running once. This removes the most common source of duplicates by construction.

Detection is a uniqueness check: scheduled queries that count rows per business key and flag any key that appears more than once. This catches duplicates that slipped past — a key that should be unique but is not, a grain that is finer than expected. Running the uniqueness check regularly turns a silent double-count into a flagged exception.

Snowflake streams help on the change-tracking side: a stream records what actually changed on a table, so a load can process genuine changes rather than blindly re-ingesting, which reduces the re-insert risk in the first place. Between an idempotent MERGE, a uniqueness check and streams, duplicates stop being the quiet inflator of every downstream total.

Late Arrivals: Freshness and Lag

Late and stalled data is caught by freshness and arrival-lag checks. A freshness check asks "when did this table last receive data, and is that recent enough?" — so a feed that silently stopped is flagged rather than quietly serving stale numbers that look current. A table that should update hourly and last updated six hours ago is a problem worth knowing about before someone reports from it.

Arrival-lag checks handle the subtler case of data that does arrive, but late — after the period it belongs to was reported. Measuring the gap between when a record is dated and when it landed tells you how late your data genuinely runs, which both flags abnormal lateness and informs how long a period should stay open before it is treated as final.

These checks turn "the number was final but the data was not complete" into a known, bounded condition. You know a feed is current because freshness says so, and you know how late data realistically arrives because lag says so — so a period is reported final when the data actually is, not when the calendar says the month ended.

Freshness checks flag a feed that silently stopped; arrival-lag checks reveal how late data genuinely runs. Together they stop a period being reported "final" before the data is actually complete.

So What — Monitoring, Not Spot-Checks

Data quality on Snowflake is a monitoring discipline, not an act of care. Reconcile counts and control totals against the source to catch missing records; prevent duplicates with an idempotent MERGE and catch any that slip through with uniqueness checks; run freshness and arrival-lag checks to catch stalled and late feeds; and alert on every breach so a drift surfaces the morning it starts. Snowflake streams support the change-tracking that underpins several of these.

The test is whether a gap, a duplicate or a stalled feed would reach a human the morning it happened or at month-end in front of finance. If the checks run on a schedule and alert on tolerance breaches, it is the former — a flagged exception resolved quietly. If data quality depends on someone noticing, it is the latter, and the platform is one reconciliation away from a trust problem. We build Microsoft-first by default and apply the same monitoring discipline on Snowflake where a client’s estate runs there — the checks differ in syntax, not in principle.

Would a gap, duplicate or stalled feed reach a human the morning it happened, or at month-end in front of finance? Scheduled checks make it the former; relying on someone noticing makes it the latter.

If a gap, a duplicate or a late batch has ever surfaced at month-end in front of finance, scheduled data-quality checks are the fix. 30 minutes with Amit on reconciliation, uniqueness, freshness and alerting for your Snowflake estate. 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 EngineeringSnowflakeData QualityModern Data StackData Integration

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

How do you detect missing records in Snowflake?

Reconcile row counts and key control totals — summed amounts, document counts, quantities — between Snowflake and the source system on a schedule, and alert when they diverge beyond a tolerance. Checking both count and total matters, because a load can have the right number of rows but the wrong total if some landed truncated or with nulls. This catches a gap the morning it happens rather than weeks later when a number fails to reconcile at month-end.

How do you prevent and detect duplicate records in Snowflake?

Prevent them at load time with a MERGE keyed on the business key rather than an append, so re-loading a record updates the existing row instead of inserting a second — an idempotent load. Detect any that slip through with scheduled uniqueness checks that count rows per business key and flag keys appearing more than once. Snowflake streams also help by tracking what actually changed, so loads process genuine changes rather than blindly re-ingesting and duplicating.

How do you catch late-arriving data in Snowflake?

With freshness and arrival-lag checks. A freshness check flags a table that has not received data recently, catching a feed that silently stopped before it serves stale numbers. An arrival-lag check measures the gap between when a record is dated and when it landed, revealing how late data genuinely runs — which flags abnormal lateness and informs how long a period should stay open before being treated as final, so you do not report a period complete before its data is.

What role do Snowflake streams play in data quality?

Streams track the changes made to a table — the rows inserted, updated or deleted since last consumed — so a load can process genuine changes rather than re-ingesting everything, which reduces the risk of duplicate inserts. They support the change-tracking that underpins incremental processing and some quality checks. Streams are part of the toolkit alongside reconciliation, uniqueness, freshness and lag checks, not a complete data-quality solution on their own.

Related FAQs

Questions operations leaders ask

Recognise this pattern in your operation?

30 minutes with Amit. No slides, no pitch deck, no obligation to proceed.