【问题标题】:Fuzzy lookup in SSIS does not output the result expectedSSIS 中的模糊查找未输出预期的结果
【发布时间】:2014-09-15 15:53:44
【问题描述】:

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

  • 客户 ID
  • 产品代码
  • 地区

我查看了带有字段的Region 表:

  • 身份证
  • 邮政编码
  • 地区

Client 表只有一行:

123, 3075, THOMASTOWN

Region 有 2 行:

1,3074,THOMASTOWN
2,3075,LALOR

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

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

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

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

谁能向我解释这里发生了什么以及我是否做错了什么?

【问题讨论】:

    标签: ssis fuzzy-comparison


    【解决方案1】:

    来自 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. 使用两次模糊查找(每列一个),这样如果第一次不匹配或相似度 % 不够强,您可以执行第二次查找以进行匹配。

    【讨论】:

    • 让我吃惊的是这个过程第一次产生的结果。今天我在另一台机器上运行包,得到的预期结果与我第一次在另一台机器上运行包时相似,正如我在问题中强调的那样。对我来说,这表明这里的引擎盖下的算法有点不确定。虽然过程的最终结果是模糊的,但这并不意味着过程本身也应该是不确定的。
    • 我发现了问题。我使用 SQL Destination 来存储我的原始查找访问表。我不知道 SSIS 不会在每次运行时从表中删除所有行。现在它似乎工作正常。但是我注意到了一个小问题。当我将最大匹配数设置为 100 之类的大数字时,匹配行结果的数量会减少到 1 条相似度值不高的记录!但是当我将它设置为 2 时,结果是 2 条记录,这是可以接受的。
    猜你喜欢
    • 2016-07-16
    • 2019-11-29
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    相关资源
    最近更新 更多