Great Expectations (GX) is an open-source Python framework for declaring, validating, and documenting data quality expectations inside pipelines.
A Python library in your own process: a Data Context holds expectation suites, validation definitions pair them with batches, and Checkpoints run them with actions attached. SQL sources connect over SQLAlchemy (Snowflake, BigQuery, Postgres, and the rest), plus pandas and Spark dataframes. GX Core is Apache-2.0 and free.
How Great Expectations answers the questions Data Quality turns on.
| How it works | |
| Authoring model | Python: an Expectation is a verifiable assertion, Expectations gather into a Suite, and a Validation Definition pairs a Suite with a Batch Definition so the pairing is explicit rather than implied. A Checkpoint runs one or more of those in production, and all of it hangs off a Data Context |
| Detection model | Declared assertions and nothing else, you state what must hold and a batch is validated against it. Nothing is learned, no baseline is kept and there is no comparison against yesterday; the model is the unit test applied to data, which is what every other row here is read against |
| Built-in monitors | Expectations rather than monitors: a gallery of assertions across columns and tables covering non-nullness, value ranges, set membership, uniqueness, row and column counts, types and distribution properties, with custom Expectations written where the gallery stops |
| Prevention or detection | Prevention where the pipeline is wired for it, a Checkpoint returns Validation Results and the surrounding job decides what to do with them, so bad data is stopped at an ingestion boundary or before publication only if something branches on the outcome. The framework asserts; it does not halt anything itself |
| Lineage | None: it validates a batch and knows nothing about what produced it or what consumes it |
| Alerts and delivery | Actions attached to a Checkpoint and run every time it finishes, Slack, Microsoft Teams, email and PagerDuty actions ship, UpdateDataDocsAction pushes results into the documentation site, and custom Actions cover the rest |
| Incidents and ownership | No incident workflow at all, what exists instead is Data Docs, human-readable documentation generated from Expectation Suites and Validation Results, so the artefact is a browsable report rather than a ticket with an owner and a status |
| Running it | |
| What you run | In the process that already holds the data, a Python library validating a batch wherever the pipeline runs, commonly called from Airflow or Dagster. Against SQL it builds queries and executes them in the database, and against Spark it uses Spark-native functions, so the data is never moved |
| Connections | |
| Connectors | SQL through SQLAlchemy, with first-class methods for PostgreSQL, Snowflake, SQL Server, BigQuery, MySQL, Redshift and Databricks SQL and any other SQLAlchemy dialect by connection string, plus pandas and Spark dataframes in memory, which is also how Databricks is reached |
| Cost | |
| Billing unit | Nothing to pay: GX Core is Apache-2.0 and its stewards say it will always remain free. The paid tier that once sat above it is gone: GX Cloud became part of the FICO Platform and stopped being publicly available on 1 June 2026 |
vs Great Expectations: Commercial · Self-hosted · Managed · Subscription · Operational complexity: Medium
vs Great Expectations: Commercial · Self-hosted · Managed · Subscription · Operational complexity: Medium
vs Great Expectations: Self-hosted · Free · Scala