1

我正在使用 SSIS Dimension Merge SCD 组件 (http://dimensionmergescd.codeplex.com/) 并且有一种情况,即我的配置同时包含 SCD1 和 SCD 2 列。我有设置了 InferredMember 标志的行,但是组件插入了新行并且没有重置现有推断行上的当前标志。

有没有其他人使用这个组件并且你看到它工作正常吗?我是不是误会了?我的理解是 InferredMember 为真的 SCD2 列变为 SCD1,这是错误的吗?

在数据库中对业务键进行排序,并将排序列设置为匹配。DMSCD 组件的输出直接连接到 OLE DB 命令/OLE DB 目标组件。这是在生产中,并且几个月来每天都可以正常工作。

这是运行的审计输出:

ExistingDimensionInputRowCount = 719941
SpecialMemberInputRowCount = 1
SourceSystemInputRowCount = 720516
UnchangedOutputRowCount = 719941
NewOutputRowCount = 720517
DeletedOutputRowCount = 0
SCD2ExpiredOutputRowCount = 0
SCD2NewOutputRowCount = 0
SCD1UpdatedOutputRowCount = 0
InvalidInputOutputRowCount = 0
4

2 回答 2

2

你只对推断成员有问题吗?并且您正在使用 CodePlex 上发布的最新版本的组件?

听起来您的问题不仅与推断的成员有关,而且可能是因为 SCD2 管家列(当前成员和日期列)设置不正确而发生的。DMSCD 未按预期交付输出的最常见原因是以下原因之一:

  1. 您在 DMSCD 之后使用派生列组件更改日期,和/或不更新/插入 DMSCD 提供的日期信息。相反,您在派生列中使用硬编码或变量值,在表定义中使用默认值,或者未正确映射目标列。

  2. DMSCD 输入的排序顺序不正确。您可能会假设将 OLE DB 源输出上的 IsSorted 属性标记为 true,并且设置列的各种 SortKeyPosition 属性就足够了 - 但事实并非如此。删除您所做的高级编辑,或在流中使用排序组件(出于测试目的 - 我们可以稍后修复 OLE DB 源)。

于 2011-12-14T22:35:22.950 回答
0

所以,要回答我自己的问题,是的,我错了。单独的 InferredMember 标志不会触发 Inferred Member 行为。

推断成员是插入维度表中的骨架记录 - 通常由存储过程。- 在事实表维护期间代理键查找失败时。InferredMember 标志通常会触发维度加载过程以填充骨架推断成员记录上的剩余字段。对于推断成员记录上的 SCD2 字段,它们将作为 SCD1 处理,不应生成新记录。

通过实验,我能够确定 DMSCD 组件要求推断成员骨架至少包括业务密钥、推断成员标志和过去的活动日期 - 我使用当前日期,因此不处理记录作为推断的成员记录,它们被视为新记录并且正在生成重复项。

遗憾的是,我从来没有找到说明与 DMSCD 兼容的推断成员记录规范的文档,以便推断成员记录可以由为创建它们而开发的存储过程正确形成。我还质疑无法使用当前日期的活动日期标记推断的成员记录。

于 2011-12-16T14:34:51.947 回答