Ssis SSI将重复列替换为保留原始列的空字符串

Ssis SSI将重复列替换为保留原始列的空字符串,ssis,Ssis,有人能帮我满足以下要求吗 我需要检查记录中的一列是否与我要用空字符串替换重复列的任何其他列匹配 假设我有x1,x2,x3列。如何检查x1是否与x1、x2、x3列中的任何一列匹配,以及它是否匹配我想用空字符串替换重复的列。这样做比预期的更复杂。这里有两个选项: 通过复制文件并将其与自身进行高阈值比较,尝试模糊查找。我怀疑您想要检查相同的记录,如果其他列上有匹配项,那么您需要在键上创建精确匹配项(在“列”选项卡下,右键单击链接,编辑映射),并在其他列上执行模糊操作。只能链接一次字段,以便根据需要复制

有人能帮我满足以下要求吗

我需要检查记录中的一列是否与我要用空字符串替换重复列的任何其他列匹配


假设我有x1,x2,x3列。如何检查x1是否与x1、x2、x3列中的任何一列匹配,以及它是否匹配我想用空字符串替换重复的列。

这样做比预期的更复杂。这里有两个选项:

  • 通过复制文件并将其与自身进行高阈值比较,尝试模糊查找。我怀疑您想要检查相同的记录,如果其他列上有匹配项,那么您需要在键上创建精确匹配项(在“列”选项卡下,右键单击链接,编辑映射),并在其他列上执行模糊操作。只能链接一次字段,以便根据需要复制列
  • 使用所有组合执行一个存储过程,并让它生成一个包含结果的out表(您可以使用OLEDB命令运行一个存储过程)。如果我确信数据的“准确性”,我可能会同意这个观点。否则,请使用模糊

  • 由于您只有几列,因此可以运行一组update语句,如下所示:

    update Contacts
    set Phone2 = null
    where Phone2 = Phone1
    
    update Contacts
    set Phone3 = null
    where Phone3 = Phone1
    
    update Contacts
    set Phone3 = null
    where Phone3 = Phone2
    

    在SSIS数据流中完成此任务将有点棘手,因为您将尝试将所有缓冲区中的所有其他行与当前行进行比较

    相反,我建议按照Gordon Bell的建议将数据暂存到一个表中。然后,您需要确定在找到重复项时哪一行获胜。您可能有一个日期列来对其进行排序,或者您可以在ssis中的数据流中添加一个行号列,并按接收数据的方式进行排序

    下面是一个示例,说明如何查找获胜行并使用自联接更新其他行:


    m

    x1不总是等于x1吗?你能提供一个更清楚的例子吗?不,可能会也可能不会。如果它匹配,那么它将是重复的,我必须用空字符串替换重复的列。也许我误解了。您是否试图查看一条记录中某一列的值是否与另一条记录中多个列的值相同?要求是我在一个文件中有10k以上的记录,并且每条记录都有客户详细信息。该记录包括电话号码的三列。因此,我想搜索其他记录中是否存在电话号码,如果找到,我想用空字符串替换它。为了澄清,您想检查记录1中的电话号码是否存在于其他9999记录的任何其他电话号码列中?或者是:在记录1中,您希望查看电话号码是否在电话号码列中重复,如果是,请将phone2或phone3中重复的值清空?