模糊联接
Analytics 模糊联接使用键域值的模糊匹配将两个 Analytics 表组合为第三个新表。在大多数方面,模糊联接类似于常规 Analytics 联接(请参见联接表)。主要区别是除了基于键域值的精确匹配来联接记录以外,模糊联接还可以基于近似匹配来联接记录。
当主键和辅助键包含的数据种类相同,但形式稍有不同时,模糊联接很有用。另外,当键中的数据具有可能阻止精确匹配的轻微不规则性(如打字错误)时,它也很有用。
示例
场景
您想要识别任何身兼员工身份的供应商,作为分析可能存在的不适当支付工资的相关数据的方式。
方法
您使用每个表中的地址域作为公共键(Vendor_Street 和 Emp_Address),将 Vendor 主表与 Employee 表相联接。但是,键域中地址数据的形式略有不同,因此您使用模糊联接而不是常规联接。
部分数据一览
不经过繁重的数据清理和协调工作,常规 Analytics 联接功能将无法联接如下所示的主键值和辅助键值,即使它们很可能是匹配的地址。
主键值 | 辅助键值 |
---|---|
605 3rd Avenue | 605 Third Avenue |
400 High St SE | 400 High Street S.E. |
2203 Rowan Street | 2203 Rowen St |
即使经过数据清理和协调,在拼写方面略有差异的键值(如 "Rowan" 和 "Rowen")也很可能不会被匹配。
根据模糊联接设置的不同,这些键值可能被模糊联接加以联接。
输出结果
在下面的联接表示例中,精确键域匹配被突出显示为紫色,而模糊键域匹配被突出显示为绿色。
模糊联接与模糊重复之比较
模糊联接分析两个表中的键域中的值。要测试单个 Analytics 表中的单个域是否包含几乎完全相同的值,请参见模糊重复概述。
输出表大小和命令性能
输出表大小
模糊联接类似于 Analytics 多对多联接。所有主键值都可能被匹配到所有辅助键值。输出表的大小可能比主要或者辅助输入表的大小大很多倍。
命令性能
模糊匹配算法可保只有指定模糊度以内的键值或者精确匹配值会被实际联接。但是,必须测试每个可能的主要-辅助匹配,这意味着模糊联接过程可能很费时。必须执行的单个测试的数量等于主表中的记录数乘以辅助表中的记录数。
最佳做法
当您准备主要和辅助输入表以及指定模糊度时,请牢记输出表大小和命令性能。
- 调整数据 请确保只将相关记录包括在主要表和辅助表中。如果某些记录没有得到匹配的机会,请在执行模糊匹配之前过滤掉它们。
- 测试运行 对于大型数据集,请对一小部分数据执行测试运行,以便更有效地到达模糊匹配算法的合适设置。首先从更谨慎的模糊设置开始,如果需要,则逐步放宽它们。
模糊匹配算法
当您执行模糊联接时,您可以在两个不同的模糊匹配算法之间进行选择:
- Dice 系数
- 编辑距离
这些算法完全相互独立工作,并且可能生成稍微不同的结果。一个方法是执行模糊联接两次,每个算法各使用一次,并且比较结果。通常,各个结果集中的一些模糊匹配可能相互重叠,但某些匹配可能是各个结果集所独有的。
模糊度
您需要为每个算法指定模糊度,这可能显著改变结果集的大小和构成。“模糊度”是指两个值匹配的紧密程度。
根据您选择的算法的不同,您可以使用下列设置来控制模糊度:
算法 | 设置 |
---|---|
Dice 系数 |
|
编辑距离 |
|
请尝试试用不同的模糊度。首先谨慎地进行设置并且生成较小的结果集,然后逐渐放宽设置,直到您开始得到过多明显不是匹配的联接值(误报)为止。
Dice 系数
Dice 系数算法通过测量主键值和辅助键值之间的相似度来工作,相似度的取值范围为 0.0000 到 1.0000。这两个值的 Dice 系数越大,它们就越相似。
Dice 系数 | 含义 |
---|---|
1.0000 |
每个值都由相同的字符集组成,尽管这些字符可能具有不同的顺序,并且可能使用不同的大小写。 这两个值中的 n 元语法 100% 相同。 下面解释了 n 元语法。 |
0.7500 |
这两个值中的 n 元语法 75% 相同。 |
0.0000 | 两个值不具有相同的 n 元语法,或者在 n 元语法设置中指定的长度比要比较的两个值中的较短者更长。 |
n 元语法
计算 Dice 系数的方法是首先将要比较的值划分为 n 元语法。n 元语法是重叠的字符块,其长度为 n,这是您在 n 元语法设置中指定的任何长度。
下面是上述示例中的两个值,以及将其划分为长度为 2 个字符 (n = 2) 的 n 元语法所得到的结果。
2203 Rowan Street | 22 | 20 | 03 | 3_ | _R | Ro | ow | wa | an | n_ | _S | St | tr | re | ee | et |
---|---|
2203 Rowen St | 22 | 20 | 03 | 3_ | _R | Ro | ow | we | en | n_ | _S | St |
Dice 系数即这两个值中完全相同的 n 元语法的百分比。在此例中,28 个 n 元语法中的 20 个是相同的,所以该系数为 71.43%,用小数表示即 0.7143。
说明
增加 n 元语法设置中的长度可使两个值的相似性标准更加严格。
百分比
当您指定百分比设置时,您就指定了要使两个值被视为模糊匹配,它们需要具有的最小允许 Dice 系数。例如,如果您指定 0.7500,则两个值中的 n 元语法中至少有 75% 必须相同才能产生匹配。
百分比设置 | 含义 | 2203 Rowan Street / 2203 Rowen St |
---|---|---|
0.7500 |
要被视为模糊匹配,两个值中的 n 元语法中至少有 75% 必须相同。 |
不匹配,不会被包括在联接表中 (Dice 系数 = 0.7143) |
0.7000 |
要被视为模糊匹配,两个值中的 n 元语法中至少有 70% 必须相同。 |
匹配,被包括在联接表中 (Dice 系数 = 0.7143) |
有关 Dice 系数工作原理的详细信息,请参见 DICECOEFFICIENT( ) 函数。
编辑距离
编辑距离算法通过以从 0 开始的整数刻度尺来衡量主键值和辅助键值之间的差异度来工作。该刻度尺表示使一个值与另一个值完全相同所需的单字符编辑数量。这两个值之间的编辑距离越大,它们的差异就越大。
编辑距离 | 含义 |
---|---|
0 | 每个值都由遵守相同顺序的相同字符集组成。大小写可能不同。 |
2 |
要使这两个值相同,需要进行两次单字符编辑。 例如:"Smith" 和 "Smythe"
|
3 |
要使这两个值相同,需要进行三次单字符编辑。 例如:"Hanssen" 和 "Jansn"
|
距离
当您指定距离设置时,您就指定了要使两个值被视为模糊匹配,它们之间具有的最大允许编辑距离。例如,如果您指定 2,则要使两个值相同,所需的编辑数量不得超过两个。
距离设置 | 含义 | Hanssen / Jansn |
---|---|---|
2 |
要被视为模糊匹配,则使两个值相同所需的编辑数量不得超过两个。 |
不匹配,不会被包括在联接表中 (编辑距离 = 3) |
3 |
要被视为模糊匹配,则使两个值相同所需的编辑数量不得超过 3 个。 |
匹配,被包括在联接表中 (编辑距离 = 3) |
有关编辑距离工作原理的详细信息,请参见 LEVDIST( ) 函数。与该函数不同的是,模糊联接中使用的编辑距离算法自动除去前导和后继空白,并且不区分大小写。
获得更好的结果
使用 Analytics 函数对主键域和辅助键域执行数据清理和协调,可以提高模糊联接的有效性。例如,如果您协调诸如 "Street"、"St." 和 "St" 之类的值,或者完全移除它们,则可以使用更严格的模糊设置,并且在减少误报匹配数量的同时,仍然获得相同的模糊匹配。
移除通用元素
您可以使用 OMIT( ) 和 EXCLUDE( ) 函数从域值中移除诸如 "Corporation" 和 "Inc." 之类的通用元素或者诸如逗号、句点和 & 之类的字符。
移除通用元素和标点符号可使模糊联接的键域值比较仅专注于可能发生有意义差异的值部分。
步骤
您可以使用键域值的模糊匹配将两个 Analytics 表组合为第三个新表。
- 在浏览器中,打开主表,右键单击辅助表,然后选择作为辅助表打开。
主表和辅助表图标将用数字 1 和 2 更新以指示它们之间的关系 。
- 选择数据 > 模糊联接。
- 在主要选项卡上,选择您想要使用的模糊匹配算法:
- Dice 系数
- 编辑
- 根据您选择的算法的不同,您可以使用下列设置来控制模糊度。
Dice 系数
- N 元语法
- 百分比
编辑
- 距离
下面解释了这些设置。
- 从主键列表中选择主键域。
您可以仅选择一个主键域,但它必须是字符域。
- 从辅助键列表中选择辅助键域。
您可以仅选择一个辅助键域,但它必须是字符域。
- 从主域和辅助域列表中选择要包括在联接表中的域。
说明
如果您想要将其包括在联接表中,则必须明确选择主键域和辅助键域。
提示
您可以使用 Ctrl+单击选择多个不相邻的域,使用 Shift+单击选择多个相邻的域。
- 在目标文本框中,指定新的联接表的名称。
- (可选)在更多选项卡上:
- 如果您向要仅处理记录的一个子集,请选择范围面板中的选项之一。
- 如果您想要将输出结果附加(添加)到现有 Analytics 表的末尾,请选择附加到现有文件:
- 单击确定。
新的联接表是输出。
“模糊联接”对话框选项
下面的表提供了有关模糊联接对话框中选项的详细信息。
“主要”选项卡
选项 –“模糊联接”对话框 | 描述 |
---|---|
Dice 系数 |
使用 Dice 系数在主键值和辅助键值之间进行模糊匹配。
|
编辑 |
使用编辑距离在主键值和辅助键值之间进行模糊匹配。
|
辅助表 | 选择辅助表的备用方法。 |
主键 辅助键 |
指定要用来联接两个表的公共键域。
关键字域指南:
|
主域 辅助域 |
输入要包括在联接表中的域。
|
使用输出表 | 指定包含输出结果的 Analytics 表在完成操作后是否自动打开。 |
如果 |
(可选)使您可以创建一个条件以从处理范围中排除记录。
|
到 | 指定输出表的名称和位置。
无论将输出表保存到何处,打开项目时,如果该项目中还没有此表,则会将其添加到该项目中。 如果 Analytics 预填充了一个表名称,您可以接受预填充的名称或更改它。 |
“更多”选项卡
选项 –“模糊联接”对话框 | 描述 |
---|---|
“范围”面板 | 指定对主表中的哪些记录进行处理:
说明 前或后选项中指定的记录数参考表中记录的物理或索引顺序,不考虑对视图进行过滤或快速排序的情况。不过,解析操作的结果与任何过滤相关。 如果对视图进行了快速排序,则后的行为类似于前。 |
附加到现有文件 | 指定将输出结果附加(添加)到现有 Analytics 表的末尾。 |
确定 | 执行操作。
|