SSIS维度合并SCD组件中没有SCD0的解决方法?

SSIS维度合并SCD组件中没有SCD0的解决方法?,ssis,scd,Ssis,Scd,首先让我说,我知道,在金宝的定义中有SCD0这样的东西。。。然而,SSIS SCD向导有一个“固定属性”的规定,我有一个设计案例,在这个案例中,我合法地需要一个非正式称为SCD0的东西 将“Fixed Attribute”列定义为SCD2,然后不将SCD2输出连接起来作为缺少SCD0功能的解决方案,会有任何负面影响吗 此问题特别适用于SSIS维度合并SCD组件。您的帖子指出您需要缓慢更改的维度类型0。我的理解是,SCD0只意味着保留行的原始定义,而从不更新行或为行设置结束日期。如果是这种情况,那

首先让我说,我知道,在金宝的定义中有SCD0这样的东西。。。然而,SSIS SCD向导有一个“固定属性”的规定,我有一个设计案例,在这个案例中,我合法地需要一个非正式称为SCD0的东西

将“Fixed Attribute”列定义为SCD2,然后不将SCD2输出连接起来作为缺少SCD0功能的解决方案,会有任何负面影响吗


此问题特别适用于SSIS维度合并SCD组件。

您的帖子指出您需要缓慢更改的维度类型0。我的理解是,SCD0只意味着保留行的原始定义,而从不更新行或为行设置结束日期。如果是这种情况,那么为什么要使用缓慢变化的维度向导呢?难道你不应该在不存在的地方插入你的ETL吗?或者,您的意思是某些列将保留为原始值,而其他列将使用更高阶的类型


例如,您可能有一个包含ProductId、ProductName和ProductDescription的源表。也许您希望保留ProductId,因为它是您的密钥和原始产品名称,但您希望显示更新的ProductDescription值。如果是这种情况,您可以使用新值覆盖ProductDescription并保留其他列(类型1),也可以为当前行设置结束日期并创建新行,但插入原始ProductId和ProductName(类型2),或者,您可以在保留原始产品名称(类型3)的同时在新行中包含以前的ProductDescription。

是的,这会产生负面影响。SCD2是一个由两部分组成的过程,第一部分插入新行,第二部分终止旧行。SCD1更新在SCD2行过期期间处理。因此,如果SCD0列发生更改(定义为SCD2),同时SCD1列发生更改,则SCD1更新输出将不会收到该行,因为它将转到SCD2过期输出。将两个输出连接起来进行SCD1更新会导致在SCD0列更改但SCD1列未更改时执行许多不必要的更新。因此,这并不是DMSCD组件中缺少SCD0支持的有效解决办法。

如果“行”被认为是SCD0,那么这将是正确的,但是,这个问题指的是一行,其中某些列是SCD0,某些列是SCD1。好的,那么为什么要使用变慢维度任务?您可以将数据暂存到表中并运行MERGE语句,以仅更新更改的字段或插入新记录。或者,如果这不是SQL Server 2008+框,只需运行单独的更新并插入WHERE NOT EXISTS语句。如果您没有进行类型2或类型3更改,则缓慢更改维度任务是overkill。DMSCD是跨多个包的总体ETL策略的一部分,它还捕获并记录统计数据,以及维护行上的审核数据。合并可能是我求助的方法,但首先我将尝试击败DMSCD提交。此外,源代码中不存在SCD0和SCD1列。它们都是多次查找操作的结果。