Skip to content
Latchkey

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
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

  1. Run soda scan with your data source and checks file.
  2. Do not swallow the exit code; a FAILED check returns non-zero.
  3. Fix the upstream data or the transform that produced the violation.
.github/workflows/ci.yml
- name: Soda scan
  run: soda scan -d warehouse -c configuration.yml checks/orders.yml

Set a realistic threshold

When a small rate is expected, express the check with a tolerance instead of demanding zero.

checks/orders.yml
checks for orders:
  - missing_percent(customer_id) < 1:
      name: customer_id mostly present

How to prevent it

  • Keep soda scan exit 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.

Frequently asked questions

What causes ""Check ... FAILED""?
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.
How do I fix "Check ... FAILED"?
Let the non-zero exit fail CI

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card