kongtek
About
Work
Services
Insights
Get in Touch
/
kongtekdata · ai · engineering

Specialist data and AI consultancy delivering DataOps, AIOps, and MLOps advisory and engineering for enterprises and startups.

Available for new engagements
Services
DataOps ConsultingAIOps & MonitoringMLOps EngineeringAI Product Advisory
Company
AboutOur WorkInsightsContact
Legal
Privacy Policy
© 2026 Kongtek Pty Ltd. All rights reserved.Melbourne, Australia
/
/
Home/Insights/Data Quality Is Not a Dashboard: Building Observability That Actually Prevents Incidents
DataOps

Data Quality Is Not a Dashboard: Building Observability That Actually Prevents Incidents

21 November 2025·13 min read

Every data team has a quality dashboard. Red and green indicators. Freshness checks. Row count comparisons. The dashboard says green. Then a downstream report serves wrong numbers to the board.

Dashboards tell you something already broke. Observability tells you something is about to break. The difference is the gap between a monitoring system and an immune system.

Most data teams are stuck on monitoring. Here's how to build observability that actually prevents incidents instead of just documenting them.

Monitoring vs. Observability

Monitoring answers: "Is it broken right now?" You define checks. They pass or fail. You get an alert after the damage is done.

Observability answers: "Is it about to break, and why?" You instrument your pipelines so deeply that anomalies surface before they propagate downstream.

AspectMonitoringObservability
TimingReactive (after the fact)Proactive (before propagation)
ScopeKnown failure modes you've coded checks forUnknown failure modes detected through anomaly patterns
GranularityTable-level (is this table fresh?)Column-level (has the distribution oforder_amountshifted?)
Root cause"This table is stale""The upstream API changed its pagination, causing truncated ingestion at 3am"
KEY INSIGHT

A green dashboard doesn't mean your data is correct. It means none of your predefined checks caught a problem. The failures you haven't anticipated are the ones that reach the board deck.

The Three Pillars of Data Observability

1. Schema Contracts

Every data handoff is a contract. When an upstream system changes a column name, type, or nullability, your pipeline should know before it runs, not after it fails.

What to enforce:

  • Column names, types, and order
  • Nullability constraints
  • Accepted value ranges or enumerations
  • Primary key uniqueness

How to enforce it:

  • Schema validation at ingestion boundaries (before data enters the warehouse)
  • Contract definitions stored in version control alongside pipeline code
  • Automated tests that run on every pipeline execution
  • Upstream teams notified when they push a breaking change

Tools: Great Expectations, Soda, dbt schema tests, or custom validation using Pandera or JSON Schema.

2. Distribution Drift Detection

Schema checks catch structural changes. They don't catch semantic changes. If order_amount shifts from a median of $45 to $4,500, the schema is fine but the data is wrong.

What to track:

  • Statistical summaries per column (mean, median, standard deviation, percentiles)
  • Value distribution histograms compared against a rolling baseline
  • Categorical value frequencies (a new category appearing or an existing one disappearing)
  • Null rates (a column going from 0.1% nulls to 15% nulls is a signal)

How to track it:

  • Compute column-level profiles on every pipeline run
  • Compare against the trailing 30-day baseline
  • Alert when deviation exceeds configurable thresholds (e.g., Z-score above 3)
  • Store profiles historically for trend analysis
KEY INSIGHT

Column-level distribution drift catches the failures that schema checks miss. A table can be structurally perfect and semantically wrong.

3. Freshness and Volume SLOs

Data consumers need guarantees, not best-effort. Define SLOs explicitly:

  • Freshness SLO: "The orders table is updated within 2 hours of midnight UTC, 99% of the time."
  • Volume SLO: "The daily transactions load contains at least 50,000 rows, and no more than 500,000."
  • Completeness SLO: "All required fields in the customers table have less than 0.5% null rate."

Publish these SLOs. Measure against them. Report SLO compliance monthly. When an SLO is breached, treat it like a production incident, not a data team problem.

Circuit Breaker Patterns

The most underused pattern in data engineering: stopping a bad pipeline before it poisons downstream tables.

A circuit breaker halts pipeline execution when quality checks fail. The logic is simple:

  1. Run quality checks after each pipeline stage (ingestion, transformation, aggregation)
  2. If checks fail, stop the pipeline. Don't load the data.
  3. Serve the last known good version to downstream consumers
  4. Alert the responsible team
  5. Resume only after the issue is investigated and resolved

This requires a cultural shift. Most teams would rather serve stale data than no data. But serving stale data with a freshness indicator is far better than serving wrong data that looks current.

Implementation: dbt's on-run-end hooks, Airflow's ShortCircuitOperator, or custom validation steps that exit with a non-zero code on failure.

KEY INSIGHT

It's better to serve yesterday's correct data than today's wrong data. Circuit breakers prevent bad data from reaching consumers.

Integrating Observability into CI/CD

Data observability shouldn't only run in production. Shift it left:

In development: dbt tests and schema validations run locally before code is committed. Catch issues at the source.

In CI: Pull requests trigger validation against a staging environment with production-like data. New transformations must pass quality gates before merging.

In staging: Full pipeline runs with observability checks. Distribution profiles compared against production baselines. Anomalies flagged before deployment.

In production: Continuous monitoring with circuit breakers. Automated alerting. Historical trend tracking. Incident response runbooks.

StageChecksPurpose
DevelopmentSchema tests, unit testsCatch logic errors early
CIIntegration tests against staging dataValidate transformations before merge
StagingFull observability suite against prod-like dataCatch environment-specific issues
ProductionContinuous monitoring, circuit breakersPrevent downstream propagation

Tool Landscape

CategoryToolsNotes
Schema validationGreat Expectations, Soda, dbt testsdbt tests are lowest friction if you're already using dbt
Anomaly detectionMonte Carlo, Bigeye, MetaplaneManaged platforms with ML-based anomaly detection
ProfilingGreat Expectations, whylogsOpen source column-level profiling
LineageDataHub, Atlan, dbt lineageEssential for root cause analysis

The Bottom Line

Stop building dashboards that tell you what already broke. Build observability that prevents breakage from reaching consumers. Schema contracts at boundaries. Distribution drift detection at every stage. Freshness SLOs published and enforced. Circuit breakers that stop bad data before it propagates.

The goal isn't perfect data. It's knowing exactly how imperfect your data is, and stopping the worst of it before anyone notices.

Related Articles

AIOps

How Modern Tools Democratized Design for Engineers

February 2026
AIOps

Shipping LLMs to Production: An Engineering Leader's Checklist

January 2026