语法
Table.FuzzyGroup(table as table, key as any, aggregatedColumns as list, optional options as nullable record) as table
关于
按每行的指定列 key
中模糊匹配的值对 table
的行进行分组。 对于每个组,构造一个记录,其中包含键列(及其值)以及 aggregatedColumns
指定的任何聚合列。 此函数无法保证返回顺序固定的行。
可能包含一组可选的 options
以指定如何比较键列。 选项包括:
Culture
:允许根据特定于区域性的规则对记录进行分组。 它可以是任何有效的区域性名称。 例如,区域性选项“ja-JP”基于日文区域来对记录进行分组。 默认值为 "",它基于固定英文区域进行分组。IgnoreCase
:一个逻辑值 (true/false),它允许不区分大小写的键分组。 例如,当为 true 时,“Grapes”与“grapes”分为一组。 默认值为 true。IgnoreSpace
:一个逻辑值 (true/false),它允许组合文本部分来查找分组。 例如,当为 true 时,“Gra pes”与“grapes”分为一组。 默认值为 true。SimilarityColumnName
:列的名称,该名称显示输入值与该输入的代表值之间的相似性。 默认值为 null,在这种情况下,将不会添加针对相似性的新列。Threshold
:一个介于 0.00 至 1.00 之间的数字,它指定两个值将按其进行分组的相似性分数。 例如,“Grapes”和“Graes”(缺少“p”)仅在该选项设置为小于 0.90 时分组到一起。 阈值 1.00 仅允许完全匹配。 (请注意,模糊的“精确匹配”可能会忽略大小写、词序和标点符号等差异。)默认值为 0.80。TransformationTable
:一个允许根据自定义值映射来对记录进行分组的表。 它应包含“From”和“To”列。 例如,如果转换表的“From”列包含“Grapes”,而“To”列包含“Raisins”,则“Grapes”与“Raisins”分为一组。 请注意,转换表中重复出现的所有文本都将应用转换。 在上面的转换表中,“Grapes are sweet”也将与“Raisins are sweet”分为一组。
示例 1
对表进行分组,同时添加聚合列 [Count],其中包含每个位置的员工数(each Table.RowCount(_)
)。
使用情况
Table.FuzzyGroup(
Table.FromRecords(
{
[EmployeeID = 1, Location = "Seattle"],
[EmployeeID = 2, Location = "seattl"],
[EmployeeID = 3, Location = "Vancouver"],
[EmployeeID = 4, Location = "Seatle"],
[EmployeeID = 5, Location = "vancover"],
[EmployeeID = 6, Location = "Seattle"],
[EmployeeID = 7, Location = "Vancouver"]
},
type table [EmployeeID = nullable number, Location = nullable text]
),
"Location",
{"Count", each Table.RowCount(_)},
[IgnoreCase = true, IgnoreSpace = true]
)
输出
Table.FromRecords({
[Location = "Seattle", Count = 4],
[Location = "Vancouver", Count = 3]
})