【问题标题】:SSIS Data Flow How to Remove Duplicate Rows but Log the Duplicates in SSISSSIS 数据流如何删除重复行但在 SSIS 中记录重复项
【发布时间】:2012-08-31 15:18:33
【问题描述】:

我从Remove duplicates in SSIS Data Flow 那里学到了如何使用排序转换来删除具有重复数据值的行。

就我而言,我正在读取一个分隔文件,需要消除重复项,并记录具有重复键的行。我需要将这些行输出到另一个分隔文件,并将其通过电子邮件发送给客户,以便他们更正数据并重试。

不过,我不知道该怎么做。我将尝试使用 Aggregate 和 Merge Join,但我希望有一个已知的模式可以做到这一点。

【问题讨论】:

    标签: ssis duplicates duplicate-removal


    【解决方案1】:

    您好,我的答案适用于任何数据,因为 Internet 中的某些解决方案需要行的主键,因为我的解决方案不需要主键。 这里示例结构和示例数据集:

    a   b
    1   23
    1   23
    16  59
    12  12
    13  45
    12  12
    45  56
    

    只需按所有列分组并添加最后一列 - 全部计数(如果有超过两列或更多列,您只需在“聚合”元素中放置所有列和 foreach 设置分组,最后放入“全部计数” ”栏):

    然后只需添加条件拆分元素并获取超过 1 行的所有行:

    真实例子:

    【讨论】:

    • 相当不错:+1。但是如果列 a 和 b 是关键列,并且我还希望结果 OLE DB 目标中的列 C 和 D 呢?
    • 顺便说一句,希望我能为答案中的详细信息 +10
    • John Saunders IT 无关紧要,如果您的所有列都是键,则不是以及有多少列。 您只需要在“Aggregate”元素中放置所有列和foreach set group by,最后放入“Count All”列。这会奏效。
    • 嗨@Justin,当你说“我的解决方案不需要主键”时,你到底在说什么?,主键更多是一个概念,我的意思是在这种情况下你的主键是a 和 b 列,所以我根本没听完。
    • @JuanRuizdeCastilla 互联网中的一些解决方案需要 pirmary 键 - 行的一些 ID 列....在这种情况下是的,这是一个概念
    【解决方案2】:

    go through a few options on my blog 从数据流中删除重复项,a little footnote here 介绍如何“保存”重复行以进行备用处理。

    【讨论】:

      【解决方案3】:

      可能通过脚本实现。

      首先,您将use a script to iterate through the dataset 并以编程方式识别重复项。 Then you could write entries to the log file for the dupes that you find.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-06
        • 2020-10-07
        相关资源
        最近更新 更多