Soda "soda scan ... Check ... FAILED" in CI
Soda ran your checks YAML against a dataset and at least one check evaluated to FAILED, so soda scan exits non-zero. This is a real data quality violation the scan is meant to catch.
What this error means
A soda scan step prints one or more "[FAILED]" checks and exits with code 2 (checks failed) or 3 (warnings), failing the workflow.
Soda Core 3.x
Scan summary:
1/3 checks FAILED:
orders in warehouse
missing_count(customer_id) = 412 [FAILED]
check_value: 412
Oops! 1 failures. 0 warnings. 0 errors.Common causes
The data violates a check threshold
A check such as missing_count(customer_id) = 0 or duplicate_count = 0 is exceeded, so Soda marks it FAILED and returns a non-zero exit.
A threshold is stricter than the data allows
The check demands zero when a small known rate exists; the check needs a realistic threshold rather than removal.
How to fix it
Let the non-zero exit fail CI
- Run
soda scanwith your data source and checks file. - Do not swallow the exit code; a FAILED check returns non-zero.
- Fix the upstream data or the transform that produced the violation.
- name: Soda scan
run: soda scan -d warehouse -c configuration.yml checks/orders.ymlSet a realistic threshold
When a small rate is expected, express the check with a tolerance instead of demanding zero.
checks for orders:
- missing_percent(customer_id) < 1:
name: customer_id mostly presentHow to prevent it
- Keep
soda scanexit codes ungated so failures stop the job. - Express tolerances explicitly for columns with known small rates.
- Run transforms before the scan so it checks fresh data.