Shape · Matching and dedupe
Match Grouping
Turns matched pairs into groups: if A matches B and B matches C, all three share one cluster ID. Wire in the original records too and every record gets its cluster ID, with unmatched records in a cluster of their own.
Also known as: Make group, clusters
How it works
Wire the matched pairs into pairs and name Pair id column A and B (id_a and id_b as Blocking emits them). Pairs are chained, so A~B and B~C put A, B and C in one cluster, named by the smallest id in it; with text ids that is the alphabetically smallest. On its own the node outputs id and cluster_id for every id that appears in a pair. Wire the original table into records and set Records id column to get every record with cluster_id appended; a record no pair mentions becomes its own cluster.
Inputs and outputs
Inputs
pairs— Tablerecords— Table
Outputs
data— Table
Settings
The Attributes panel of Match Grouping, as in the app: the controls work, but nothing runs — there is no data behind it.
The same settings, as the Assistant writes them
{
idAColumn: string
idBColumn: string
recordIdColumn?: string
}input `pairs` = one row per matched pair (Blocking emits id_a/id_b); a~b and b~c ⇒ one cluster named by its smallest id; alone → emits id, cluster_id; wire `records` (+ recordIdColumn) → every record with cluster_id appended, unmatched records as singleton clusters
Example
After fuzzy matching, pairs (1, 2) and (2, 5) remain. With the records wired in:
| id | name | cluster_id |
|---|---|---|
| 1 | Jon Kowalski | 1 |
| 2 | John Kowalski | 1 |
| 3 | Anna Nowak | 3 |
| 5 | J. Kowalski | 1 |