Constrange

Data pipelines have failure modes too

Late data, duplicate records, schema drift, backfills, reconciliation, lineage and what happens when downstream decisions depend on bad data.

Data pipelines are treated as plumbing: invisible when they work, someone else's problem when they do not. Downstream systems — dashboards, models, automations, customer communications — inherit that optimism. They assume the table refreshed on schedule, the keys still join, the definition of 'active customer' did not change silently last Tuesday. When the assumption breaks, the failure surfaces as a wrong offer, a false green metric, or an automated decision nobody can explain in audit.

Pipelines fail in predictable ways. Not only hard outages — red jobs, empty tables — but soft failures that look like success: late data marked fresh, duplicates counted twice, schema drift absorbed by permissive loaders, backfills that rewrite history without announcement. Those failures are expensive because they wear the costume of correctness.

Constrange maps data programmes as chains of decisions under constraint. The constraint is rarely 'can we move data'. It is whether downstream owners can trust timing, definition, and lineage when the cost of being wrong is real.

Hard failures versus soft failures

Hard failures stop the job. Alerts fire. On-call responds. Soft failures complete green: the job ran, rows landed, dashboards updated. The data is wrong, stale, duplicated, or interpreted under a definition that changed without a version bump. Soft failures dominate in mature organisations because pipelines are engineered for uptime first and truth second.

A pipeline with green checkmarks leading to a dashboard that shows the wrong conclusion
Success in the job log is not success for the decision that consumed the data.
Two kinds of pipeline failure
Hard failureSoft failure
Job did not completeJob completed with wrong results
Obvious to monitoringObvious only in outcomes or audit
Fix: restart, patch, restoreFix: reconcile, communicate, reprocess
Short blast radius if caught fastLong blast radius if trusted silently
Owned by platform on-callOwned by nobody until incident

Late data: when fresh is a label, not a property

Late data is the common case. Upstream systems miss windows. Files arrive without warning. Batch overlap creates partial days. Downstream consumers read a timestamp that reflects load time, not event time — and make intraday decisions as if they were complete.

Programmes need explicit freshness contracts: maximum latency per dataset class, what downstream must do when latency is exceeded, and visibility when data is provisional versus final. Without contracts, every dashboard implicitly promises real time it cannot deliver.

  • Distinguish event time, processing time, and publish time in metadata
  • Surface 'partial day' and 'awaiting source X' states in consumer UIs
  • Block high-risk automations when freshness SLAs are breached
  • Measure lateness per source, not only job duration
  • Publish a calendar of known late sources — honesty beats surprise

Duplicate records: counting the same thing twice

Duplicates enter through retries, overlapping extracts, merged systems with conflicting keys, and 'helpful' manual uploads. Pipelines deduplicate late — or not at all — while metrics and models treat each row as independent truth.

Duplicate failure modes include inflated revenue, understated churn, double-sent customer messages, and models that learn from repeated rows as if they were evidence. Prevention requires idempotent loads, stable surrogate keys, reconciliation reports, and rules for what happens when two sources disagree on identity.

Reconciliation is not a one-off migration task

Reconciliation belongs in daily operations: row counts versus source, sum checks on critical fields, duplicate key reports, and sampled joins to operational systems. When reconciliation diverges, downstream should know before the executive review, not after.

Schema drift: when the contract changes without a meeting

Sources add columns, rename fields, change types, split tables, or stop sending values the pipeline mapped to meaningful categories. Permissive schemas hide the damage until a null rate spikes or a model feature silently zeroes out.

Schema discipline combines contracts, versioning, and breaking-change detection. Consumers declare dependencies. Producers announce changes. Loaders fail closed when unknown fields or type violations appear — rather than ingesting ambiguity that surfaces weeks later in a forecast.

Schema drift symptoms
SignalLikely cause
Sudden null spike in a stable fieldSource stopped populating or renamed
Category distribution shiftEncoding change or new default
Join rate collapseKey format or granularity changed
Downstream test pass, business wrongTests check shape, not meaning

Backfills: rewriting history responsibly

Backfills fix past mistakes — or introduce new ones. They replay months of data with a changed rule, overwrite partitions, or rebuild aggregates while dashboards still serve yesterday's logic. Without communication and versioning, two teams report different numbers for the same quarter and both believe they are correct.

Responsible backfill practice names scope, reason, expected metric movement, rollback plan, and downstream reprocessing order. It versions derived tables. It schedules backfills away from month-end close unless urgency truly dominates — and documents who signed that trade-off.

  1. Announce scope: dates, tables, fields affected
  2. Snapshot before overwrite where audit requires point-in-time truth
  3. Reprocess dependents in dependency order, not convenience order
  4. Validate with reconciliation and business sign-off on material shifts
  5. Publish a single 'as of' narrative for executives — not competing spreadsheets

Lineage: knowing what you are looking at

Lineage answers where a number came from, which transformation applied, and which source version contributed. Without lineage, incidents devolve into folklore. With lineage, teams trace a wrong customer segment to a specific extract, join, or filter — and fix the right layer.

Lineage need not be exotic to be useful. Minimum viable lineage: source system, extract time, transformation version, owning team, and documentation link for field definitions. Fancy graphs help; accountable metadata helps more.

“A metric nobody can trace is a metric nobody should automate against.”Constrange

When downstream decisions depend on bad data

Automations amplify pipeline errors. A wrong segment becomes a thousand emails. A stale credit flag becomes declined applications. A model trained on duplicated rows becomes institutional confidence in a pattern that was never real. The decision layer rarely fails first — it fails loudest.

Design downstream systems to assume pipeline imperfection: validation gates, human review for high-impact paths, circuit breakers when anomaly scores spike, and kill switches when freshness or reconciliation fails. Trust must be earned continuously, not assumed at go-live.

Human approvals are part of the architecture

When regulators or brand risk demand it, humans remain in the loop not because automation failed philosophically but because data quality cannot yet meet the decision threshold. That is a constraint to name honestly — not a temporary embarrassment to engineer around silently.

Operating model: who owns truth

Pipeline platforms own uptime. Data owners own definitions. Consumers own how they use data. When those roles blur, soft failures persist because each team assumes another will notice. Incidents repeat with new dashboards.

Strong programmes publish data products with SLAs, known limitations, and escalation paths — the same seriousness as customer-facing APIs. Internal data is still a product. Its users make real decisions.

A twelve-month reliability programme

  1. Quarter one: inventory critical datasets, consumers, and freshness requirements
  2. Quarter two: implement reconciliation and schema contracts on top five sources
  3. Quarter three: add lineage metadata and block automations on SLA breach
  4. Quarter four: run a controlled backfill drill — measure communication and rollback

Twelve months is enough to learn whether the organisation trusts data by habit or by evidence.

  • Prefer fail-closed loaders over silent coercion
  • Measure soft failures: late, duplicate, drift — not only job red
  • Pair pipeline changes with downstream regression checks
  • Never backfill without telling finance and operations
  • Treat definition changes as releases, not side effects

Questions for your next data review

  • Which decisions run on data that might be provisional — and do owners know?
  • What reconciliation proves today's table matches source truth?
  • What happens when schema drift is detected — fail, quarantine, or silently load?
  • Who approves backfills that move executive metrics?
  • Can you trace yesterday's automated action to a source row and transform version?

If the answers are uncomfortable, the pipeline is not infrastructure. It is an unpriced liability feeding decisions that look data-driven.

Lineage as architecture

When a dashboard disagrees with finance, the argument is won by whoever can trace lineage fastest: which source, which transform, which late arrival, which duplicate key. Without lineage, debugging is opinion. With lineage, debugging is engineering — and the organisation can fix the pipeline instead of debating the number.

Pipelines that cannot explain themselves will eventually produce a decision someone regrets. That regret is architectural, not operational.

Frequently asked questions

How do we prioritise which pipelines to harden first?

Start where bad data triggers automations, customer impact, or regulatory reporting — not where logs are noisiest.

Is late data ever acceptable?

Yes, if labelled provisional and downstream behaviour respects it. Unacceptable is late data presented as final.

Do we need a full lineage platform on day one?

No. Start with source, transform version, owner, and timestamp on critical datasets. Expand as incidents demand.

Who should own reconciliation?

The data owner for definitions, with platform support for tooling. Consumers validate business outcomes, not row counts alone.

Share

LinkedInXWhatsAppFacebookRedditBlueskyEmail
Keep reading

Related posts