Data Expectation Runner
Turn a table specification into eight kinds of explicit checks. Read a CSV table, edit a reusable rule set, then inspect which rules passed and exactly which rows and columns failed. Decimal arithmetic is exact within the stated fixed-decimal profile; results describe the rules you chose rather than inferring whether the dataset is trustworthy.
Key features
- Edit required, uniqueness, range and literal allowed-value contracts
- Compare numeric columns and check detail columns against a row total
- Check grouped detail sums and inconsistent repeated group-total declarations
- Check composite reference-key existence separately from target-key uniqueness
- Import/export versioned rule JSON with strict shape, duplicate-key and column checks
- Export all failure events and each affected source row, independently of paged previews
How to use
- Paste or read UTF-8 CSV and choose comma, semicolon or tab as the delimiter.
- Read the table, then add rules and select the exact column names and blank policy.
- Set decimal bounds and tolerances; a group total must be declared identically on every group row.
- Run all rules. Fix input errors before interpreting rule pass/fail outcomes.
- Inspect failure pages, then save the reusable rules, full report or complete CSV evidence.
Use cases
- Check invoice detail amounts against a repeated invoice total
- Catch duplicate IDs before importing a CSV into another system
- Enforce that requested amounts do not exceed each row’s limit
- Reuse the same table contract across successive data deliveries
Frequently asked questions
How does this differ from a data profiler?
A profiler describes observed types and distributions. This runner evaluates the requirements you explicitly declare, including relationships between columns and grouped totals. A pass means those rules passed on this table, not that all possible data problems were excluded.
Which numeric values are accepted?
Signed decimals with 1–18 integer digits and up to 12 fractional digits. Surrounding whitespace is removed for numeric parsing; leading zeros count toward the digit limit, and -0 equals 0. Exponents, grouping commas, .5, 1., currency, NaN and Infinity are rejected. Sums and tolerances use exact scaled integers, so 0.1 + 0.2 equals 0.3.
What counts as missing, and are keys normalized?
Choose empty strings only, or empty plus whitespace-only cells. Required, unique, numeric and reference rules treat required blank cells as violations. The allowed-values rule compares exact strings and accepts an empty string only when explicitly listed. Keys and allowed strings retain whitespace and case; they are never trimmed or normalized.
How are group totals and references checked?
Every row in a group must declare a numerically identical total, then the detail sum is compared with that total using the inclusive tolerance. Invalid numeric members invalidate the group check instead of becoming zero. A same-table reference only checks that an ordered key tuple exists; add a separate uniqueness rule if the target key must be unique.
Are input errors or cancellation counted as rule failures?
No. Malformed CSV, missing referenced columns, invalid rule shapes, duplicate JSON keys/IDs and unknown fields prevent evaluation. Cancellation or a work/report limit discards the whole run, without partial success. A missing or malformed numeric cell inside a valid table is instead a data violation with a row and column location.
Do exports contain every failure and preserve the CSV data?
A completed run exports every failure event and each affected source row once. The preview shows 25 events per page only. Input is never rewritten. CSV downloads quote fields and prefix formula-like text with an apostrophe, reporting the protected-cell count; JSON preserves raw strings. CSV record numbers count logical records including the header, not physical lines inside quoted cells.
Privacy
CSV, rules and reports stay in current page memory. Nothing is uploaded or automatically saved. Downloads can contain original cell values and should be shared accordingly.
Comments & questions