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 — Table
  • records — 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:

idnamecluster_id
1Jon Kowalski1
2John Kowalski1
3Anna Nowak3
5J. Kowalski1