0

首先让我说,我知道,在 Kimball 的定义中有诸如 SCD0 之类的东西......但是,SSIS SCD 向导有一个“固定属性”的规定,我有一个设计案例,我合法地需要什么非正式地称为 SCD0。

将“固定属性”列定义为 SCD2,然后只是不连接 SCD2 输出作为缺少 SCD0 功能的解决方法,是否会有任何负面影响?

此问题专门与 SSIS Dimension Merge SCD 组件有关。

4

2 回答 2

0

您的帖子指出您想要一个缓慢变化的维度类型 0。我的理解是 SCD0 只是意味着您保留行的原始定义并且永远不会更新它或为其设置结束日期。如果是这样,那为什么还要使用缓慢变化维度向导呢?你不会让你的ETL插入不存在的地方吗?还是您的意思是某些列将保留为原始值,而您将为其他列使用更高阶的类型?

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

于 2012-01-04T20:21:11.747 回答
0

是的,有负面影响。SCD2 是一个由两部分组成的过程,首先插入新行,然后使旧行到期。SCD1 更新在 SCD2 行到期期间处理。因此,如果 SCD0 列发生更改 - 并被定义为 SCD2 - 同时 SCD1 列发生更改,则 SCD1 更新输出将不会接收该行,因为它将转到 SCD2 过期输出。连接两个输出以执行 SCD1 更新会导致在 SCD0 列更改但 SCD1 列没有更改时执行许多不必要的更新。因此,由于 DMSCD 组件中缺乏 SCD0 支持,这不是一个有效的解决方法。

于 2012-01-06T14:48:25.403 回答