SSIS 2012 - 将缓慢变化的维度UpdateChangingAttributeHistory设置为true

时间:2014-10-29 09:42:19

标签: sql-server ssis sql-server-2012 ssis-2012 scd

使用SCD任务向导,我无法设置UpdateChangingAttributeHistory属性,默认为false。我可以使用高级编辑器将其设置为true,但这不会更新生成的流,因此行为没有更改。如何在不重新运行向导的情况下触发SSIS重新生成流程(将UpdateChangingAttributeHistory设置为false),我需要做什么?

我的目标是让一个类型2的scd在发生更改时更新事实表。

1 个答案:

答案 0 :(得分:1)

我无法解释为什么UpdateChangingAttributeHistory复选框在向导中显示为灰色 - 这听起来很糟糕。但我可以告诉你它的作用。如果这是默认值,则默认情况下,它会将“更改属性更新输出”的OLE DB命令的WHERE子句更改为以下内容:

... WHERE [SomeKeyColumn] = ? AND [SCD_EndDate] IS NULL

如果你没有使用日期,它会像[CurrentRowFlag] ='Y'

如果将该属性设置为true,则会删除WHERE子句的该部分,以便更新所有具有类型1更改的行,即当前和历史。就是这样。这就是为什么,如果不重新生成组件,该标志无效,因为OLE DB命令没有更改。

因此,您可以在更改属性更新输出中手动进行更改,但如果将来重新生成SCD组件,这些更改可能会丢失。
正如评论中所指出的,考虑使用其他组件创建此功能以提高性能和可维护性是值得的,特别是如果它开始时表现得很有趣。