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

时间:2014-09-15 15:53:44

标签: ssis fuzzy-comparison

为了简单起见,我可以说我有一个Client表格,其中包含字段:

  • 客户端ID
  • P码
  • 区域

我查看了Region表格,其中包含字段:

  • ID
  • 邮编
  • 区域

Client表有一行:

123, 3075, THOMASTOWN

该地区有两行:

1,3074,THOMASTOWN
2,3075,LALOR

我正在尝试使用SSIS模糊查找来清理一些数据。

我使用Client作为源,将查找作为Reference。当每次查找的最大输出匹配数为1时,结果为123,3075,THOMASTOWN, 1,3074,THOMASTOWN。在这种情况下,SSIS更喜欢区域的值超过pcode的值。但是当我将此选项增加到更高(2,4或100)时,所有结果行都与前一个相同。

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

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

任何人都可以向我解释这里发生了什么以及我做错了吗?

1 个答案:

答案 0 :(得分:0)

来自BOL:http://msdn.microsoft.com/en-us/library/ms137786.aspx

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. 

如果您在匹配中使用这两列,则该区域似乎有足够的不同,以至于pcode本身仍然不具有足够强的匹配性以返回任何结果。

有几种选择:

  1. 尝试调整相似性阈值,看看是否可以获得返回的行
  2. 使用两个模糊查找(每列一个),这样如果第一个不匹配或相似度%不够强,您可以执行第二次查找以进行匹配。