What Are Data Quality Tools?
Data quality tools are software systems that detect, measure, and alert on problems in your data — wrong values, missing records, schema drift, duplicate rows, or delayed refreshes. The category is broader than most people expect, and picking the wrong type of tool for a given problem is one of the most common mistakes data teams make.
At a high level, the landscape breaks into four distinct categories:
- Profiling tools — scan datasets to understand shape, distribution, null rates, and cardinality. Examples: Datafold, Great Expectations profilers, dbt's
dbt-profilerpackage. - Validation and testing tools — define rules or assertions that data must meet, run those checks during a pipeline or on a schedule, and fail the job if a rule breaks. Examples: Great Expectations, dbt tests (
not_null,unique,accepted_values). - Observability and monitoring tools — continuously watch data in production, learn baseline behavior, and alert when something anomalous happens — even if no explicit rule was written. Examples: Monte Carlo, Bigeye, Acyl.
- BI-layer production monitors — track the outputs your business actually consumes: dashboards, reports, scheduled refreshes. Alert when a Power BI refresh fails, a Tableau extract is stale, or an ADF pipeline drops rows before they reach a report. Example: MetricSign.
These categories are complementary, not interchangeable. A team that only runs dbt tests will still have silent failures in production. A team that only has a production monitor will not catch a malformed raw CSV before it propagates downstream. Understanding where each tool operates in the data lifecycle is the first step to building a reliable data stack.
Dev vs. Production: Why the Gap Matters
Most data quality conversations focus on the development and CI phase — writing dbt tests, running Great Expectations checkpoints before a deploy, validating schema contracts. That work is valuable. But it covers only one half of the problem.
Production data quality is fundamentally different for three reasons:
1. Inputs change without warning.
Your dbt tests pass in CI because they ran against last week's data snapshot. But the upstream ERP system your sales team uses just changed a field name from order_status to order_state. Your pipeline runs without error. Your tests never see the change. The order_state column is NULL for every row from that day forward.
2. Infrastructure failures are invisible to logic tests.
A Power BI dataset refresh fails with DataSource.Error: The underlying connection was closed. No dbt test catches that. No Great Expectations checkpoint fires. The dashboard shows yesterday's numbers with today's timestamp. A user exports that data into a board presentation.
3. Schedules drift. A Fabric pipeline that normally completes in 22 minutes now takes 4 hours because of a compute capacity bottleneck. The data is technically correct — just 3.5 hours late. No schema test catches latency. Only a monitor watching actual refresh completion times will.
The specific failure modes that reach BI consumers are almost entirely in this third category: wrong refresh state, silently stale data, row count drops after a pipeline change, and query timeouts that leave cached results on screen. These problems occur after all your dev-time quality gates have passed.
"Our dbt tests all passed. The dashboard was still wrong for six hours because the incremental load job silently stopped inserting rows after a schema change in the source." — A recurring support conversation across every data team, regardless of tooling.
A complete data quality strategy requires coverage at both layers. The tools that cover them are different tools.
Tool Comparison: Categories Side by Side
The table below maps the major tools against category, open-source availability, the layer they operate on, and the use case they are best suited for.
| Tool | Category | Open source | Focus layer | Best for |
|---|---|---|---|---|
| dbt tests | Validation / testing | Yes | Transformation layer | Schema contracts, null checks, referential integrity during pipeline runs |
| Great Expectations | Validation / testing / profiling | Yes | Raw → transformed data | Expectation suites, data docs, checkpoint-based CI gates |
| Datafold | Profiling / diff | Free tier + paid | Transformed data | Column-level diffs between environments, cross-env row counts |
| Monte Carlo | Observability / monitoring | No | Warehouse tables | ML-based anomaly detection on table health, freshness, volume |
| Bigeye | Observability / monitoring | No | Warehouse tables | Rule-based and automated monitors on column distributions |
| Soda Core | Validation / monitoring | Yes (Core) | Warehouse + pipeline | Flexible SQL-based checks, scan scheduling |
| MetricSign | Production monitoring | No | BI layer (reports/pipelines) | Refresh failures, stale dashboards, pipeline latency in Power BI / Tableau / ADF / Fabric / dbt / Snowflake / Qlik Cloud / Airflow |
Key distinctions:
- dbt tests and Great Expectations operate on data at rest or in motion during a pipeline run. They fire during execution and block the job if a rule fails. They do not watch what happens after data lands in a report.
- Monte Carlo and Bigeye operate on warehouse tables, learning baselines and alerting on drift. They cover more ground automatically but still stop at the warehouse boundary. If a Power BI dataset refresh picks up good data but then fails to load into the model, that gap is invisible to warehouse monitors.
- MetricSign operates on the BI layer output — the actual artifacts your stakeholders consume. It tracks whether a dataset refresh completed, whether a dbt job finished before a dependent report ran, whether an ADF pipeline moved the expected row volume, and whether Tableau extracts are current.
Using only one category leaves blind spots. Most mature data teams run dbt tests plus a warehouse monitor plus a BI-layer monitor as three separate but complementary layers.
What Goes Wrong Without BI-Layer Monitoring
Here are concrete failure patterns that testing and profiling tools cannot catch, all of which are common in production BI environments.
Scenario 1: Refresh succeeds but loads stale data
An ADF pipeline copies data from an on-prem SQL Server to Azure. The copy activity completes with status Succeeded and 0 rows failed. But a network timeout caused the pipeline to read from a replica that was 6 hours behind. The Power BI dataset refreshes successfully off that stale copy. No dbt test fires. No warehouse anomaly detector fires (the row count is normal). The dashboard shows last quarter's revenue figures.
Scenario 2: Dependency chain breaks silently
Your Fabric pipeline runs at 06:00. Your Power BI dataset refresh is scheduled for 06:30. The pipeline finishes at 06:47 due to a cold start on shared capacity. The dataset refresh starts on schedule, reads the prior day's data, completes successfully. Users log in at 08:00 to yesterday's numbers.
Fabric pipeline: started 06:00, completed 06:47 (+17 min late)
Power BI refresh: started 06:30, completed 06:52 (read old data)
User impact: stale dashboard for full business day
Alerts fired: 0A monitor watching both the pipeline completion time and the dataset refresh timestamp would have caught the gap and alerted at 06:31.
Scenario 3: Row count drop after a schema migration
A developer adds a WHERE deleted_at IS NULL filter to a dbt model during a refactor. The model passes all tests — the filter is logically valid. But the source system uses soft deletes aggressively, and the filtered model now returns 34% fewer rows than before. The sales pipeline dashboard shows a sudden drop in open opportunities. The sales team spends two hours in a Slack thread deciding whether the business is collapsing.
A row count monitor watching the model's output volume would have flagged the drop immediately after the deploy.
Scenario 4: Tableau extract failure masked by cached view
A Tableau Cloud extract fails with SSL_ERROR_HANDSHAKE at 07:00. Tableau serves the cached extract from the prior day without surfacing a visible error to viewers. The workbook shows a last-refresh timestamp of yesterday. Most users do not notice. The extract has been failing for three days before someone checks the Tableau Server admin console manually.
Monitoring extract health via the Tableau REST API and alerting on missed refresh windows catches this in minutes, not days.
Choosing the Right Tool for Your Use Case
The decision is not "which data quality tool should I use" but "which layer am I missing coverage on."
Use dbt tests if: You have a dbt project and want to enforce schema contracts, null constraints, uniqueness, and referential integrity during transformation runs. This is the lowest-friction starting point for most teams. Cost: free. Effort to add: low. Coverage: transformation layer only.
Use Great Expectations if: You need to validate raw data before it enters your pipeline, or you want a more expressive expectation language than dbt's built-in tests. Good for teams ingesting from external sources (S3 drops, SFTP files, third-party APIs) where schema surprises are common. Cost: free (open source). Effort to add: medium.
Use Datafold if: You do frequent schema migrations or dbt model refactors and want column-level diffs between environments before merging. Catches the "I changed a filter and lost 30% of rows" problem before it reaches production. Cost: free tier + paid plans.
Use Monte Carlo or Bigeye if: You have a large warehouse with hundreds of tables and need automated anomaly detection without writing individual rules for each table. ML-based baseline learning reduces manual configuration. Cost: paid, enterprise pricing.
Use MetricSign if: You operate BI reports and dashboards in production and need to know when a Power BI dataset refresh fails, a Fabric pipeline runs late, a Tableau extract goes stale, a dbt job aborts, a Qlik Cloud reload fails, an Airflow DAG errors, or an ADF pipeline drops rows before they reach a report. MetricSign monitors the execution and output health of your BI stack across connectors — it is the layer between your data infrastructure and your dashboard consumers.
A practical starting stack for a mid-size data team in 2026:
- dbt tests on all
martslayer models — null, unique, accepted_values, relationships. - Great Expectations checkpoint on raw ingestion for high-risk external sources.
- MetricSign on all production datasets, pipelines, and reports — catching the failures that happen after the transformation layer.
This covers three distinct failure domains with minimal overlap and minimal total cost.