0

我正在使用 SQL Server 2014 和 Visual Studio 2015。
例如,我有一个 SCD2 用于员工姓名

SK     AltKey       Name            Gender    IsActive
1      15           Sven Svensson    M        1
2      16           Jo Jonsson       M        1

在事实表中

SK      AgentSK      CallDuration    DateKey
100     1            335             20160808
101     2            235             20160809

因此,您可以看到多维数据集当前链接在 FctAgentSK 和 DimSK 上。这按计划工作。但是,当 Jo 更改性别时,SCD2 使该行处于非活动状态 (0) 并插入一个具有新性别和 IsActive 为“1”的新行。

我面临的问题是事实SK 101 仍然引用代理的“旧”详细信息。我应该如何处理这个问题才能仍然报告电话,但也参考代理的“正确”详细信息 - 反映他们当前的性别。

当插入一个新事实时,它将分配“新”SK,但基本上我需要报告发生在性别变化两侧的所有呼叫。

请问有什么建议吗?

谢谢你。

4

1 回答 1

1

正如 Nick.McDermaid 建议的那样,如果您不想要 SCD2 功能,可以将其从维度设计中删除(我经常看到它在实际上并不需要时过度实现:也许您已经继承了这种设置?) .

如果您想要/必须保留 SCD2 设计,但想要报告当前员工属性(性别和任何其他 SCD2 属性)。

  1. Kimball 在此处记录了“类型 6”:SCD 类型 0,4,5,6,7。您将属性的“当前”值添加到现有的 Type2 设计。然后,您可以仅报告“当前”属性。

  2. 我假设员工姓名“Alt Key”是持久的员工密钥,通过员工属性的变化保持不变?您可以创建一个稍微不同的 Employee 维度(或 Employee 维度内的层次结构),它具有 Alt Key 作为其叶级键。如果您仍然没有 SK 作为维度属性,这将使维度表“折叠”为每个 AltKey 一个成员,而不是每个 SK 一个成员。显然,您不能将任何 SCD2 属性添加到此 Alt Key 层次结构中,因为每个键不会有一个值;这引发了关于调用什么的特殊问题持久的“员工”(即叶级别的名称列将是什么),因为员工姓名是最明显的 SCD2 属性之一,不会保持不变。可能这种方法最好与维度数据中包含“当前值”的基础“Type6”结合,如上面(1)中所述。

于 2016-12-19T16:50:45.807 回答