Soda Core is an open-source data quality testing framework that allows data engineers to define declarative checks in YAML files. These checks validate datasets for issues like missing values, schema changes, freshness, and custom business rule violations. It integrates directly into data pipelines and CI/CD workflows, enabling test-driven data development and preventing bad data from propagating downstream.
Glossary
Soda Core

What is Soda Core?
Soda Core is an open-source, command-line data quality testing framework that enables engineers to define and execute programmatic checks on their data.
The framework operates by executing SQL queries against data sources—including data warehouses and data lakes—to validate defined data quality rules. It produces detailed reports on test failures and metrics. As a core component of the broader Soda data observability platform, it provides the foundational programmatic testing capability, while commercial offerings add monitoring, alerting, and root cause analysis features.
Key Features of Soda Core
Soda Core is a programmatic data quality testing framework that enables data engineers to define, run, and monitor checks for freshness, volume, schema, and custom business logic directly within their data pipelines.
Declarative YAML Configuration
Soda Core uses a simple, human-readable YAML syntax (called a Soda Checks file) to define data quality tests. This declarative approach separates the what (the quality rule) from the how (the execution engine).
- Define checks for a dataset in a
checks.ymlfile. - Specify the data source (e.g., Snowflake, PostgreSQL, Spark).
- Write checks like
row_count > 0ormissing_count(column_name) = 0. - This configuration-as-code approach enables version control, peer review, and easy integration into CI/CD pipelines.
Programmatic Python Execution
While checks are defined in YAML, they are executed via a Python library (soda-core-sql or soda-core-spark). This provides flexibility and power for advanced use cases.
- Install the relevant
soda-corepackage for your data source. - Run checks from a CLI command:
soda scan -d your_data_source -c configuration.yml checks.yml. - Integrate scans directly into Python data pipelines (e.g., Airflow DAGs, Databricks notebooks).
- The Python SDK allows for dynamic check generation and programmatic result handling.
Built-in & Custom Metrics
The framework provides a library of standard metrics for common data quality dimensions, and allows for the creation of custom SQL metrics.
Built-in Metrics:
- Freshness:
freshness- Time since the most recent data update. - Volume:
row_count,missing_count,missing_percentage. - Schema:
schema- Detects changes in column names, types, or order. - Uniqueness:
duplicate_count,distinct_count. - Validity:
invalid_count,invalid_percentage(using regex or format checks).
Custom SQL Metrics:
- Define your own SQL queries to calculate business-specific metrics (e.g.,
total_revenue,customer_churn_rate). - Apply thresholds and checks directly to these custom metric results.
Automated Anomaly Detection
Soda Core includes automated monitoring for numeric metrics using statistical methods, moving beyond static thresholds.
- For metrics like
row_countoravg_value, you can configure checks to use dynamic thresholds. - The system learns from historical metric values to establish a normal range.
- It flags anomalies when current values deviate significantly from the learned pattern (e.g., using techniques similar to statistical process control).
- This is crucial for detecting data drift—gradual changes in data distributions that static thresholds would miss.
Pipeline Integration & Gating
Soda Core is designed to be embedded at key stages of the data lifecycle, acting as a quality gate.
- Pre-Production (CI/CD): Run checks on pull requests to validate changes to data models before merging.
- Pipeline Execution: Integrate a
soda scanas a task within an orchestration tool (e.g., Airflow, Dagster, Prefect). If checks fail, the pipeline can be configured to halt, preventing bad data from propagating. - Production Monitoring: Schedule regular scans (e.g., hourly, daily) on live data assets to monitor ongoing health and trigger alerts.
- This enables continuous testing for data, mirroring software engineering best practices.
How Soda Core Works
Soda Core is an open-source framework for programmatically validating data integrity within pipelines.
Soda Core is a data quality testing framework that enables engineers to define and execute programmatic checks on datasets using a simple, declarative YAML syntax. It operates by connecting to a data source—like a data warehouse, database, or file—and running a suite of configured checks to validate freshness, volume, schema, and custom business rules. Failed checks generate data quality incidents that can be routed to monitoring tools.
The framework's execution is typically integrated into data pipeline orchestration tools (like Airflow or dbt) or CI/CD workflows, acting as a quality gate. It separates the definition of checks (what to test) from the execution logic (how to run them), allowing teams to implement test-driven data development. Results are surfaced via exit codes, logs, or integrated into data observability platforms like Soda Cloud for centralized monitoring.
Soda Core vs. Other Data Testing Frameworks
A technical comparison of core capabilities, integration patterns, and operational models across leading open-source and commercial data quality frameworks.
| Feature / Capability | Soda Core | Great Expectations | dbt Test | Monte Carlo / Commercial Platforms |
|---|---|---|---|---|
Core Architecture | Declarative YAML/CLI framework | Python library with expectation suites | Declarative YAML/SQL within dbt project | SaaS platform with agent-based collection |
Primary Integration Method | CLI, Python library, Airflow operators | Python library, custom orchestration | Native within dbt build command | Proprietary cloud connectors, API |
Test Definition Syntax | YAML-based checks (SodaCL) | Python code or JSON expectations | YAML or SQL in schema.yml files | Web UI, YAML, or API-driven |
Programmatic Test Creation | Limited; primarily YAML config | Extensive via Python API | Limited; YAML/SQL declarative | Web UI primary, API secondary |
Built-in Metric Types | Freshness, volume, schema, custom SQL | Extensive library of expectation types | Generic, unique, not_null, relationships | Pre-built monitors for common patterns |
Dynamic Thresholds | Via reference checks, manual configuration | Optional, requires custom implementation | Not supported natively | Automatic via statistical baselining |
Pipeline Gating | Yes, via CLI exit codes, Airflow sensors | Yes, via Python script integration | Yes, via dbt build --fail-fast | Yes, via webhook alerts, Slack/email |
Data Source Coverage | 20+ connectors (Snowflake, BigQuery, etc.) | 15+ connectors via execution engines | Native to data warehouse via adapter | 50+ commercial & cloud connectors |
Result Storage & History | Local file, Soda Cloud (commercial) | Data Docs (HTML), metrics stores | dbt artifacts, run results JSON | Proprietary cloud data store, unlimited |
Alerting & Notifications | Basic CLI output, Soda Cloud required for advanced | Custom via callbacks, Data Docs | CLI output, integration via dbt Cloud | Multi-channel (Slack, PagerDuty, Teams, email) |
Root Cause Analysis Tools | Limited; column-level diagnostics | Basic profiling, custom data assistants | Lineage in dbt DAG, test failures | Automated lineage correlation, impact scoring |
Cost Model | Open-source core, commercial cloud | Open-source, self-managed infrastructure | Open-source core, commercial cloud | Subscription SaaS, based on data volume/users |
Deployment Complexity | Low; single binary, Python package | Medium; Python environment, GX server optional | Low; part of dbt project | Low; agent-based, managed service |
Team Collaboration Features | Soda Cloud for shared dashboards | Data Docs for HTML sharing | dbt Cloud for centralized runs | Native multi-user roles, dashboards, audit logs |
Frequently Asked Questions
Essential questions and answers about Soda Core, the open-source data quality testing framework that uses YAML-based checks to validate data freshness, volume, schema, and custom metrics within data pipelines.
Soda Core is an open-source, Python-based data quality testing framework that programmatically validates data by executing checks defined in a declarative YAML file, known as a checks file. It works by connecting to a data source (like a data warehouse or data lake), scanning the data, and running a suite of user-defined tests to detect anomalies, schema drifts, and freshness issues. The framework operates on a simple principle: you define what constitutes good data (your checks), and Soda Core executes them to tell you if your data meets those standards, outputting pass/fail results and metrics. It integrates into data pipelines, CI/CD workflows, and orchestration tools (like Apache Airflow) to act as a quality gate, preventing poor-quality data from propagating downstream.
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
Key concepts and tools that define the modern practice of programmatically validating data integrity, schema, and business logic.
Data Quality Rule
A declarative or programmatic statement that defines a condition data must satisfy to be considered valid. These rules form the building blocks of automated testing.
- Examples: A column must be non-null, values must fall within a numeric range, or a string must match a specific regex pattern.
- In frameworks like Soda Core, these are defined in YAML configuration files as 'checks'.
- They can be simple (schema validation) or complex (custom SQL queries).
Assertion (Data)
A programmatic check within a data pipeline that verifies a specific condition about the data and raises an error or warning if false. It is the functional execution of a data quality rule.
- Key Mechanism: Acts as a logical gate; if the assertion passes, the pipeline proceeds. If it fails, the pipeline can halt or trigger an alert.
- Difference from a Rule: A rule is the definition; an assertion is the runtime execution of that definition.
- Commonly implemented in code (e.g., Python's
assertstatement) or within testing frameworks.
Data Contract
A formal agreement, often codified as code, that specifies the expected schema, data types, freshness, and quality guarantees for a data product.
- Purpose: Establishes a clear, enforceable interface between data producers and consumers, reducing pipeline breakage.
- Components: Typically includes schema definition, SLAs for freshness, and a set of required data quality rules.
- Relation to Testing: Tools like Soda Core can be used to operationalize and continuously validate the rules specified within a data contract.
Pipeline-Gated Test
A data quality test whose failure prevents a data pipeline from proceeding to the next stage, acting as a mandatory quality gate.
- Critical Function: Blocks bad data from propagating downstream, protecting analytics and machine learning models.
- Implementation: Often configured within orchestration tools (e.g., Apache Airflow, Dagster) or testing frameworks where a test failure raises a fatal error.
- Example: A test checking for a minimum row count in a daily ingestion table; if it fails, the dependent aggregation jobs are not triggered.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us