Skip to content

Reconciliation Jobs

A reconciliation job (or “check”) compares data across two connections. It runs in two phases: extraction and comparison.

A job is defined declaratively rather than with raw SQL queries: for each connection you specify the schema/table and a column mapping, plus optional filters. DataRecs extracts the mapped columns from each source into a staging area. Extractors run as isolated jobs with their own resource limits, keeping each run sandboxed.

For the full structure — dimensions, measures, stages, and tolerances — see Configuring a reconciliation job.

Once both extractions complete, a comparator joins the sources on the job’s dimensions (the grouping columns) and evaluates the measures against each stage’s tolerances. Each row group is classified as:

  • Matched — the group is present across all sources and every measure is within tolerance.
  • Unmatched — the group is missing in one or more sources, or a measure is outside tolerance.

A run’s overall result is MATCHED only when every group joins across all sources and all tolerances pass; otherwise it is UNMATCHED. See Data types & comparison for the comparison semantics.

You can organise related jobs into job groups and run them together on a schedule or on demand. Job groups track run history and aggregate status.

Jobs can be triggered:

  • Manually from the Console, CLI, or REST API.
  • On a schedule via the built-in scheduler — create a schedule with a cron expression (and optional timezone) and the job runs automatically.
  • From your own orchestrator — for example, trigger runs from Apache Airflow using the Airflow provider.