SSIS 数据流:如何删除重复的行,但在 SSIS 中记录重复的行

SSIS Data Flow How to Remove Duplicate Rows but Log the Duplicates in SSIS

提问人:John Saunders 提问时间:9/7/2012 最后编辑:CommunityJohn Saunders 更新时间:9/9/2012 访问量:16651

问:

我从删除 SSIS 数据流中的重复项中学习了如何使用排序转换删除具有重复数据值的行。

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

不过,我不太清楚该怎么做。我将尝试使用 Aggregate 和 Merge Join,但我希望有一个已知的模式来执行此操作。

SSIS 重复项

评论


答:

0赞 dev_etter 9/7/2012 #1

这可以通过脚本来实现。

首先,您将使用脚本循环访问数据集并以编程方式识别重复项。然后,您可以将条目写入日志文件中,以获取找到的重复项

6赞 Justin 9/7/2012 #2

嗨,我的答案将适用于任何数据,因为互联网上的某些解决方案需要行的主键,因为我的解决方案不需要主键。 下面示例结构和示例数据集:

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

enter image description here

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

enter image description here

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

enter image description here

真实例子:

enter image description here

评论

0赞 John Saunders 9/7/2012
还不错:+1。但是,如果列 a 和 b 是关键列,并且我还希望在结果 OLE DB 目标中使用列 C 和 D,该怎么办?
0赞 John Saunders 9/7/2012
顺便说一句,希望我能+10的答案中的详细细节
0赞 Justin 9/7/2012
约翰·桑德斯(John Saunders)IT无关紧要,如果你所有的列都是键,那么键不是,有多少列。您只需要在“聚合”元素中放置所有列,并设置每个分组,最后放置“全部计数”列。这将起作用。
0赞 Juan Ruiz de Castilla 4/21/2017
嗨,@Justin,当你说“对于我的解决方案,不需要主键”时,你实际上是在说什么?,主键更像是一个概念,我的意思是在这种情况下,你的主键是 a 列和 b 列,所以我根本没有完成捕获。
0赞 Justin 4/21/2017
@JuanRuizdeCastilla互联网中的一些解决方案需要 pirmary key - 行的一些 ID 列......在这种情况下,是的,这是一个概念
2赞 Todd McDermid 9/9/2012 #3

我在我的博客上浏览了几个选项来从数据流中删除重复项,这里有一个关于如何“保存”重复行以供替代处理的小脚注。