2011-11-23 39 views
6

我在SSIS中执行一些ETL以构建一些维度数据集。其中之一是日期。当为维度生成一组日期时,我可以使用查找日期维度中的已有内容的方式进行查找,并重定向任何失败的方法,这些方法被假定为新日期,然后添加到表格中。从SSIS中加载的数据集中筛选出重复项

问题是我得到的数据集本身可能包含重复的日期。插入到维度表时,这会导致使用唯一日期键的错误。所以我正在寻找一种在SSIS管道中加载的数据集中筛选的方法。

我可以在初始加载日期时使用DISTINCT,但在这种情况下的日期是DATETIME。我需要稍后使用数据转换转换才能通过采用日期组件将其转换为DATE。我正在寻找独特的日子,在DATETIME上不同的日子不会给我这样的。

我无法像以前那样使用SSIS查找,因为这需要指向数据库的连接管理器。

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

我是SSIS的新手,一直没能找到一个转换工具,可以让我比较集合中的其他行。

+0

您是否有权访问强制执行键?如果是这样,您可以启用选项'IGNORE_DUP_KEY',该选项将放弃重复的插入,而不会产生错误。 – JNK

+1

当您存储日期时间时,是将时间分量置零或强制为一个公共值?给定'2011-10-10 00:00:00.000'和'2011-10-10 12:12:12.012'这个过程应该只发送一个2011-10-10行。选择哪一个是否重要?我们可以放弃时间组件吗? – billinkc

回答

7

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