Skip to content

Instantly share code, notes, and snippets.

@ncalm
Created May 23, 2023 16:05
Show Gist options
  • Save ncalm/32b605076076a6080522e768c10bb2d6 to your computer and use it in GitHub Desktop.
Save ncalm/32b605076076a6080522e768c10bb2d6 to your computer and use it in GitHub Desktop.
Power Query function for cleaning pairwise matches on an arbitrary column-set
(Data as table, ComparisonColumns as list, ReplacementFunction as function) as table =>
let
AddRecords = Table.AddColumn(Data, "Record",each _),
AddSortedComparisonValues = Table.AddColumn(
AddRecords,
"SortedComparisonValues",
each List.Sort(
Record.FieldValues(
Record.SelectFields(_, ComparisonColumns)
)
)
),
GetReplacement = Table.Group(
AddSortedComparisonValues,
"SortedComparisonValues",
{
{"ReplacementRecord",
each ReplacementFunction(Table.SelectColumns(_, ComparisonColumns))}
}
),
AddReplacementRecord = Table.AddColumn(
AddSortedComparisonValues,
"ReplacementRecord",
each GetReplacement{
[SortedComparisonValues=[SortedComparisonValues]]
}[ReplacementRecord]
),
RecordMerge = Table.AddColumn(
AddReplacementRecord,
"NewRecord",
each [Record] & [ReplacementRecord]
),
Result = Table.FromRecords(RecordMerge[NewRecord])
in
Result
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment