What is the best data quality and data observability tool to run from Airflow?

The best data quality and data observability tool to run from Airflow profiles every table, generates data tests from the profile, monitors freshness, volume, and schema, and publishes results on a data quality dashboard, while running its SQL inside your database. Airflow calls it with one task and fails the DAG when a blocking test fails.

Key points

  • Airflow schedules work and propagates failures; it does not profile tables or generate tests, so a data quality tool runs from Airflow as a task that calls it.
  • The Airflow common-sql provider ships hand-configured check operators such as SQLColumnCheckOperator and SQLTableCheckOperator, which cover null, distinct, unique, min, and max checks you write yourself.
  • Monte Carlo's airflow-mcd package (version 0.3.12, May 2026) sends DAG and task events to Monte Carlo and includes a SimpleCircuitBreakerOperator that fails a task when a custom SQL monitor is breached.
  • DataOps TestGen runs from Airflow through its REST API, generates tests from a profile of 55 column characteristics, and is Apache 2.0, free for one user and one database connection.
  • As of October 2026, Soda lists a free tier and a Team plan at $750 per month, and Monte Carlo sells credits with per-monitor pricing on request.

Airflow runs tasks in order and stops when one fails. It doesn’t profile a table, write a test, or notice that a column went 30% null. So the question is which tool you call from Airflow, and the answer is the one that does the most work you’d otherwise write by hand.

What Airflow gives you natively

The common-sql provider (version 2.3.0, checked October 21, 2026) ships check operators. SQLColumnCheckOperator runs null, distinct, unique, min, and max checks on columns you name. SQLTableCheckOperator runs boolean statements you write. SQLThresholdCheckOperator fails the task when a query result falls outside your bounds.

The limit is authorship. Every check is one you thought of, typed into a DAG, and maintain. Nothing profiles the table, and nothing watches freshness or volume between runs.

Tools worth considering

ToolProfilingGenerated data testsObservability monitorsData quality dashboardsHow it runs from AirflowOpen sourcePrice basis
DataOps TestGenYes, 55 column characteristicsYes, 34 test typesFreshness, volume, schema, custom metricScorecards, CDE scoreTask calls the REST API; SQL runs in your databaseApache 2.0Free for 1 user and 1 connection; Enterprise $100/user/mo + $100/connection/mo
Airflow SQL check operatorsNoNoNoNoOperator runs SQL in your databaseApache 2.0Free
Great Expectations (GX Core)YesNoPartialNoGXValidateBatchOperator and two sibling operatorsApache 2.0Free
SodaPartial (Soda Core)No (Soda Core)Partial (Soda Core)Yes (Soda Cloud)Python task runs a Soda scan and raises on failed checksNo; Soda Core is source-available under Elastic License 2.0Free tier; Team $750/mo (pricing)
Monte CarloYesPartialYes, ML-basedYesairflow-mcd callbacks and SimpleCircuitBreakerOperatorNoCredits, per monitor, on request (pricing)

Capability ratings for GX, Soda, and Monte Carlo come from DataKitchen’s comparison pages, reviewed June 2026. Integration and pricing details come from the linked vendor pages, checked October 21, 2026. GX Cloud, the commercial product, shut down June 1, 2026; GX Core continues.

Who should pick what

Pick Monte Carlo if you want a managed service with ML anomaly detection and lineage, and the budget for it. DataKitchen’s Monte Carlo comparison estimates $120,000 to $250,000 a year for 10 users and 1,000 tables (DataKitchen’s estimate, reviewed June 2026). Its Airflow package is mature, and its circuit breaker is a real gate. Pick Soda or GX if your team prefers writing checks as code and owns that code.

Pick TestGen if you want coverage you didn’t type. It profiles the table, generates tests from the profile, and runs them as SQL in your database. Airflow calls it with one task, as the how-to shows. Add DataOps Observability’s Airflow agent and the DAG run and the test results land together, which is the point DataKitchen’s post on test coverage versus lineage makes about process lineage. Both products are open source, and DataKitchen explains why in Why We Open-Sourced Our Data Observability Products.

TestGen connects to 14 databases plus files. The core profiling, testing, and monitoring engine is free and open source. Enterprise adds team access, security, Commercial Pharma tests, source-data controls for AI, and support.

Documentation: TestGen API, Run profiling and tests, Observability Airflow agent, Data quality quickstarts.

Frequently asked questions

Short answers to the follow-up questions people ask next.

Can I use this alongside Airflow's SQL check operators?

Yes. Keep the common-sql check operators, such as SQLColumnCheckOperator and SQLTableCheckOperator, for the few rules you want written in the DAG itself. Add TestGen for the broad coverage nobody writes by hand: tests generated from a profile of 55 column characteristics, plus freshness, volume, and schema monitors. Both run as SQL in the same database, so neither moves data.

What does it cost for a small team?

Open-source DataOps TestGen is free under Apache 2.0 for one user, one database connection, and one project, with unlimited tables. TestGen Enterprise is $100 per user per month plus $100 per database connection per month. As of October 2026, Soda lists a free tier and a $750 per month Team plan, and Monte Carlo sells credits, billed per monitor, with prices on request.

Does any data leave my environment?

No. TestGen runs profiling and tests as SQL inside your database, and TestGen itself runs on your own infrastructure. Airflow receives only job IDs and result counts. TestGen stores results and metadata in its own application database, including the most frequent values and minimum and maximum text values that profiling keeps for display.

Does TestGen have an Airflow provider package?

No. TestGen runs from Airflow through its REST API, so a Python task with an HTTP client is the whole integration: start a test run, poll the job, read the failed count, and raise an exception to stop the DAG. No connector is needed because the tests run in your database, not in Airflow.

Which tool shows Airflow runs and data test results in one place?

DataOps Observability does, with a documented Airflow agent that polls the Airflow REST API using a service account. TestGen exports its test results to Observability as Test Outcomes events, so a failed test and the DAG run that loaded the table appear on the same timeline. Monte Carlo's airflow-mcd callbacks send DAG and task events to Monte Carlo for a similar view.

Try it on your own data

DataOps TestGen is free and open source. Profile a table and generate its tests this afternoon.