Use case 05 · For finance analysts and data engineers

Reconcile two datasets, and prove a migration landed.

“The row counts match” is not the same as “the data is right”. The risk is never the rows that vanished. It is the eleven thousand that arrived with a decimal in the wrong place.

The job today

Usually somebody's weekend and a spreadsheet.

Two exports, a lookup formula per column, and a count at the bottom that matches. The wide-join version, with one hand-written comparison per column, works until the table gains a column, and then it quietly checks one column fewer.

When a column changed type in the migration, every row reports a mismatch, and the one row that really did change is somewhere in ten million lines.

What it replaces

  • A lookup formula per column → one node over every shared column
  • The counts match → mismatches counted per column
  • Ten million type mismatches → one summary line for a retyped column
  • A report cut off at a limit → every difference, with no cap
  • A guess when keys repeat → a refusal that names the key
On the canvas

Two inputs, two answers.

One answer for the person who asks “are we clean?” and one for the person who has to go and fix it.

Built from these nodes, each with its own documentation page

Build it, step by step

Three settings, and the node does the rest.

Columns are paired by name and rows by the key you choose. Values are compared as text, which is what lets a retyped column be checked at all.

1

Read both sides.

Primary is the source of truth; Target is the dataset being checked and the one the report is about. Either can be a file, a database, a warehouse or an API.

2

Clean before you compare.

Data Compare reports what it is given. Trim whitespace and fix case with Data Cleanse, and rename or retype columns with Manage Columns, upstream where you can see it, or those differences will be reported, correctly but noisily.

3

Choose the key.

Rows pair on the key, which may be several columns. Leave Compare columns empty to compare every column the two datasets share.

Key: region, order_id Compare columns: (all shared)

4

Read the Summary.

One row per column: its role, its type on each side, whether the types match, how many values were compared and how many disagreed. It appears in the Data tab even with nothing wired to it, and it is kept on a full production run.

5

Send the Differences.

One row per mismatched cell, always carrying the key and the column, plus a row for every record missing from the target and every extra one. Write it to CSV or a table, or email it to the team that owns the discrepancy.

Running it

Leave it wired into the nightly load and read the answer in the morning.

Every night, beside the load

Run it as the last step of the nightly Flow, so the morning starts with a summary of whether the two systems agree.

Keep a history

Append the Summary to a table every night and you can answer when the two systems started drifting.

Month-end on a schedule

Point it at the ledger and the bank file at month end, and the reconciliation is a run anyone can repeat, not a workbook one person owns.

Proving a migration

Run the old system against the new one before you switch, and again after. The summary is the sign-off.

When something goes wrong

It refuses to guess, by name.

A key value that appears twice on one side stops the run and names the value, because pairing the wrong two rows would make every number in the report wrong. A key column typed differently on the two sides is refused for the same reason.

A column whose type changed but whose data survived reports the type change once, with zero value mismatches. That is the difference between “it was re-typed” and “it was corrupted”.

Summary · one row per column
columnroleprimary_typetarget_typetype_matchvalues_comparedvalues_mismatched
order_idkeyintegerinteger
amountcompareddecimal(12,2)decimal(12,2)true120441711042
statuscomparedtexttexttrue12044170
placed_atcompareddatetextfalse12044170

Scope worth knowing. Values are compared as their text, so 1.0 and 1.00 differ unless they are rounded upstream. A Test run reads 50 rows from each side, so rows past that look missing; press Run for the real figures.

Bring the reconciliation that eats your month-end.

Thirty days of the full Enterprise product on your own server, against your own data. If you would rather see it first, book a walkthrough with the people who build it.