SSIS中的模糊查找未输出预期结果

SSIS中的模糊查找未输出预期结果,ssis,fuzzy-comparison,Ssis,Fuzzy Comparison,为了简单起见,假设我有一个带有字段的客户机表: 客户 PCode 区域 我有一个带有字段的查找区域表: 身份证件 邮政编码 区域 客户端表有一行: 123, 3075, THOMASTOWN 该区域有2行: 1,3074,THOMASTOWN 2,3075,LALOR 我正在尝试使用SSIS模糊查找清理一些数据 我使用客户端作为源,使用查找作为参考。当每次查找输出的最大匹配数为1时,结果为1233075,THOMASTOWN,13074,THOMASTOWN。在这种情况下,SSIS更喜欢re

为了简单起见,假设我有一个带有字段的客户机表:

客户 PCode 区域 我有一个带有字段的查找区域表:

身份证件 邮政编码 区域 客户端表有一行:

123, 3075, THOMASTOWN
该区域有2行:

1,3074,THOMASTOWN
2,3075,LALOR
我正在尝试使用SSIS模糊查找清理一些数据

我使用客户端作为源,使用查找作为参考。当每次查找输出的最大匹配数为1时,结果为1233075,THOMASTOWN,13074,THOMASTOWN。在这种情况下,SSIS更喜欢region的值而不是pcode的值。但当我将此选项增加到更高的2、4或100时,所有结果行都与前一行相同

我希望当我增加该数字时,查找表的另一行显示为匹配项之一,因为该行与客户行具有相同的区域代码

令我惊讶的是,当我第一次将选项从2增加到4时,我在模糊查找输出的4行中的2行中看到了另一个查找记录作为匹配的预期结果,但从那时起,它就再也没有发生过,并且我总是根据最大匹配数选项的不同值看到完全相同的记录

有人能告诉我这里发生了什么,我是否做错了什么吗?

来自BOL:

如果在匹配中使用这两列,则该区域似乎差异很大,以至于pcode本身仍然不足以返回任何结果

有两种选择:

尝试调整相似性阈值,看看是否可以返回该行 使用两个模糊查找,每列一个,这样,如果第一个不匹配或相似度%不够强,可以执行第二个查找以进行匹配。
让我惊讶的是这个过程第一次产生的结果。今天我在另一台机器上运行了这个包,得到了与我第一次在另一台机器上运行这个包类似的预期结果,正如我在问题中强调的那样。对我来说,这表明引擎盖下的算法在这里的行为有点不确定性。虽然过程的最终结果是模糊的,但我认为这并不意味着过程本身也是不确定的。我发现了问题所在。我使用SQL Destination存储我的原始查找访问表。我不知道SSIS不会在每次运行时删除表中的所有行。现在看来效果不错。但我注意到一个小问题。当我将最大匹配数设置为一个较大的数字(如100)时,匹配行结果的数量将减少到1条记录,该记录没有高的相似性值!但是当我把它设置为2时,结果是2条记录,这是可以接受的。
The transformation returns zero or more matches up to the number of matches specified. 
Specifying a maximum number of matches does not guarantee that the transformation 
returns the maximum number of matches; it only guarantees that the transformation 
returns at most that number of matches.