🔍 Data Quality Playground

Production-style data-quality checks on a retail orders dataset — the same gates used in real dbt + Airflow pipelines. 100% client-side: your data never leaves the browser.

Pick a dataset variant and hit “Run checks”.

Data Quality Best Practices — the short, opinionated version

1. Test at ingestion, not after the dashboard breaks. Validate schema, nullability, and value ranges the moment data lands (staging layer). A malformed date should page someone at 2am — not surface as a wrong chart in a board meeting.

2. Use contracts between producers and consumers. Agree the schema up front: column names, types, allowed values, freshness SLA. Enforce it with schema tests (dbt test, JSON Schema, Pandera). When the producer changes the contract, the pipeline fails loudly instead of silently corrupting downstream.

3. Layer your tests like you layer your models.
Staging: source freshness, row counts, schema conformance.
Intermediate: uniqueness, referential integrity, accepted values.
Marts: business-logic invariants (e.g. “revenue is never negative”, “every order has a customer”).

4. Monitor freshness and volume, not just correctness. Most production incidents are “the data is late” or “half the rows are missing”, not wrong values. Alert on max(event_time) lag, row-count anomalies vs. a 7-day baseline, and schema drift.

5. Make failures actionable. A failing test should say which rows, which rule, and who owns it — route alerts to the owning team with a sample of bad records. “Check failed” with no context gets muted.

6. Quarantine, don’t silently drop. Bad rows go to an error table with the failure reason. You keep auditability, you can backfill after a fix, and nobody wonders where the rows went.

7. Treat data quality as a product metric. Track a quality score over time (like the score on the Run Checks tab). Report it next to pipeline SLAs. What gets measured gets fixed.

Built from production experience: 15+ Airflow DAGs, dbt + Snowflake migrations, and automated quality gates across 20+ critical tables.