聚类值使用模糊匹配算法自动创建具有相似值的组,然后将每个列的值映射到最佳匹配组。 使用具有相同值的不同变体的数据时,此转换非常有用,并且需要将值合并为一致的组。
请考虑一个包含 ID 列的示例表,其中包含一组 ID ,一个 Person 列,其中包含一组各种拼写和大写版本的名称 Miguel、Mike、William 和 Bill。
在此示例中,要查找的结果是一个表,其中包含一个新列,其中显示了 “人员” 列中的正确值组,而不是相同单词的所有不同变体。
注释
群集值功能仅适用于 Power Query Online。
创建群集列
若要群集值,请先选择 “人员 ”列,转到功能区中的 “添加列 ”选项卡,然后选择 “群集值 ”选项。
在 “群集值 ”对话框中,确认要用于从中创建群集的列,然后输入列的新名称。 在本例中,将此新列命名为 “群集”。
该作的结果如下图所示。
注释
对于每个值群集,Power Query 将从所选列中选取最频繁的实例作为“规范”实例。 如果出现多个实例的频率相同,Power Query 将选取第一个实例。
使用模糊群集选项
以下选项可用于新列中聚类值的生成:
- 相似性阈值(可选):此选项指示必须将两个值组合在一起的方式。 最小设置为零(0)会导致所有值组合在一起。 最大设置为 1 仅允许完全匹配的值组合在一起。 默认值为 0.8。
- 忽略大小写:比较文本字符串时,将忽略大小写。 此选项默认处于启用状态。
- 通过组合文本部件进行分组:算法尝试将文本部件(例如将 Micro 和 soft 组合到 Microsoft)组合到分组值。
- 显示相似性分数:显示输入值与计算出代表性值之间的相似性分数(在模糊聚类分析后)。
- 转换表(可选):可以选择映射值(例如将 MSFT 映射到 Microsoft)的转换表,以将它们组合在一起。
对于本示例,使用名为 我的转换表 的新的转换表来演示如何映射值。 此转换表有两列:
- 来源:要查找在表中的文本字符串。
- 要:用于替换 From 列中的文本字符串。
重要
转换表具有与上图中显示的相同列和列名(它们必须命名为“From”和“To”),否则 Power Query 不会将此表识别为转换表,并且不会发生任何转换。
使用之前创建的查询,双击 “聚集值 ”步骤,然后在“ 群集值 ”对话框中展开 模糊群集选项。 在 模糊群集选项下,启用 “显示相似性分数 ”选项。 对于 转换表(可选),请选择具有转换表的查询。
选择转换表并启用 “显示相似性分数 ”选项后,选择“ 确定”。 该作的结果提供一个表,其中包含与原始表相同的 ID 和 Person 列,但也包含两个名为 Cluster 和 Person_Cluster_Similarity 的新列。 群集列包含 Miguel 和 Mike 这些名字的正确拼写和大写版本,作为 Miguel 的变体,以及 Bill、Billy 和 William 这些名字的正确拼写和大写版本,作为 William 的变体。 Person_Cluster_Similarity列包含每个名称的相似性分数。
转换表原则
你可能会注意到,上一部分中的转换表似乎表明迈克的实例已更改为 Miguel,威廉的实例更改为 Bill。 然而,在生成的表中,比尔和“billy”的实例被改为威廉。 在转换表中,转换表不是直接 从头 到 尾 的路径,而是在聚类分析期间对称的,这意味着“mike”等效于“Miguel”,反之亦然。 转换表中给定的等效项的结果取决于以下规则:
- 如果存在大多数相同的值,则这些值优先于非典型值。
- 如果没有大多数值,则首先出现的值优先。
例如,在本文中使用的原始表中, “Person ”列中的 Miguel(既是“miguel”和“Miguel”)的版本构成了名称 Miguel 和 Mike 的大多数实例。 此外,首字母大写的“米格尔”占据了名字“米格尔”的大部分。 因此,将 Miguel 及其派生项与 Mike 及其派生项关联在转换表中,结果是在 群集 列中使用 Miguel 这个名称。
但是,对于威廉、比尔和“billy”的名字,没有大多数值,因为这三个都是唯一的。 由于 William 首先出现,因此在 “聚类” 列中使用 William。 如果表中首先出现“billy”,则会在 “群集 ”列中使用“billy”。 此外,由于没有大多数值,因此使用各个名称使用的事例。 也就是说,如果威廉是第一个,则使用威廉的大写形式“W”作为结果值;如果“billy”是第一个,则使用billy的小写形式“b”。