从 SSIS 中加载的数据集中过滤掉重复项

Posted

技术标签:

【中文标题】从 SSIS 中加载的数据集中过滤掉重复项【英文标题】:Filter out duplicates from a loaded dataset in SSIS 【发布时间】:2011-11-23 14:21:05 【问题描述】:

我在 SSIS 中做一些 ETL 来构建一些维度数据集。其中之一是约会。在为维度生成一组日期时,我可以对日期维度中已有的内容进行查找并重定向任何失败的日期,这些日期被假定为新日期,然后被添加到表中。

问题是我拥有的数据集本身可能包含重复的日期。这将在插入维度表时导致唯一日期键出错。所以我正在寻找一种在 SSIS 管道中加载的数据集中进行过滤的方法。

我可以在初始加载日期时使用 DISTINCT,但在这种情况下,日期是 DATETIME。稍后我需要使用数据转换转换将其转换为 DATE,只需获取日期组件即可。我正在寻找独特的日子,而 DATETIME 的独特日子不会给我。

我不能像以前那样使用 SSIS 查找,因为它需要一个指向数据库的连接管理器。

我可以告诉 OLE DB 目标不要使用批量插入忽略任何错误。然而,这假设唯一的错误是重复的日期。

我对 SSIS 还很陌生,还没有找到可以让我与集合中的其他行进行比较的转换工具。

【问题讨论】:

您是否有权访问强制执行密钥的索引?如果是这样,您可以启用选项IGNORE_DUP_KEY,它只会丢弃重复的插入而不是生成错误。 当您存储日期时间时,时间分量是归零还是强制为一个公共值?给定 2011-10-10 00:00:00.0002011-10-10 12:12:12.012 进程应该只发送一个 2011-10-10 行。选择哪一个有关系吗?我们可以去掉时间组件吗? 【参考方案1】:

您可以使用排序转换并选择删除重复项,也可以使用聚合转换并仅使用分组依据(这或多或少类似于 DISTINCT)。请注意,这些操作是异步的,这意味着所有行都必须在继续之前进入此任务,而不是同步任务只会在行进来时吃掉并吐出缓冲区。

【讨论】:

以上是关于从 SSIS 中加载的数据集中过滤掉重复项的主要内容,如果未能解决你的问题,请参考以下文章

过滤掉我的查询集的重复项

过滤掉流分析中的重复项

如何根据数据集中的行长过滤 RDD。?

从大型数据集中过滤掉记录的最佳方法是什么

如何使用 SSIS 从平面文件中删除重复的行?

如何从 R 数据框中过滤列的唯一组合