首先让我说,我知道,在Kimball的定义中有SCD0这样的东西......但是,SSIS SCD向导有一个“固定属性”的规定,我有一个设计案例,其中我合法地需要那些被非正式地命名为SCD0。
将“固定属性”列定义为SCD2会不会产生任何负面影响,然后不将SCD2输出连接起来作为缺少SCD0功能的解决方法?
此问题专门针对SSIS Dimension Merge SCD组件。
答案 0 :(得分:0)
您的帖子声明您希望缓慢更改维度类型0.我的理解是SCD0仅表示您保留行的原始定义,并且永远不会更新它或为其设置结束日期。如果是这种情况,那么为什么要使用Slow Changing Dimension向导呢?难道你不只是让你的ETL插入不存在的地方吗?或者您的意思是某些列将保留为原始值,您将为其他列使用更高的订单类型?
例如,您可能拥有包含ProductId,ProductName和ProductDescription的源表。也许您希望保留ProductId,因为它是您的密钥和原始ProductName,但您希望显示更新的ProductDescription值。如果是这种情况,您可以使用新值覆盖ProductDescription并单独保留其他列(类型1),或者您可以为当前行设置结束日期并创建新行但插入原始ProductId和ProductName(类型2) ),或者您可以在新行中包含PreviousProductDescription,同时保留原始ProductName(类型3)。
答案 1 :(得分:0)
是的,会产生负面影响。 SCD2是一个两部分过程,首先插入一个新行,第二个过期旧行。在SCD2行到期期间处理SCD1更新。因此,如果SCD0列发生更改 - 并且定义为SCD2 - 同时SCD1列发生更改,则SCD1更新输出将不会接收该行,因为它将转到SCD2到期输出。连接两个输出以执行SCD1更新会导致在SCD0列更改但SCD1列未更改时执行许多不必要的更新。因此,这不是DMSCD组件中缺乏SCD0支持的有效解决方法。