SSAS & SCD2 - 如何处理 Dim 中的 IsActive 行

SSAS & SCD2 - how to deal with IsActive row in Dim

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

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

事实上 table

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

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

我面临的问题是 factSK 101 仍然引用代理的 'OLD' 详细信息。我应该如何处理这个问题才能继续报告通话情况,同时参考代理的 "correct" 详细信息 - 反映他们当前的性别。

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

有什么建议吗?

谢谢。

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

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

  1. Kimball 在此处记录 "Type 6":SCD types 0,4,5,6,7。您将属性的 "current" 值添加到现有的 Type2 设计中。然后您可以仅报告 "current" 属性。

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