我正在使用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仍然引用了“老人”这个问题。代理商的详细信息。我应该如何处理这个仍能报告电话,但也参考"正确"代理人的详细信息 - 反映他们目前的性别。
当插入新事实时,它将具有“' NEW' SK分配了,但基本上我需要报告性别变化任何一方发生的所有电话。
有什么建议吗?
谢谢。
答案 0 :(得分:1)
正如Nick.McDermaid建议的那样,如果你不想要SCD2功能,你可以将其从维度设计中删除(我经常看到它实际上并不需要时过度实施:也许你已经继承了那种设置?)。
如果您想/必须保留SCD2设计,但想报告当前员工属性(性别和任何其他SCD2属性)。
Kimball记录了" Type 6"在这里:SCD types 0,4,5,6,7。你添加一个"当前"属性值对现有Type2设计的影响。然后,您可以报告"当前"仅属性。
我假设员工姓名" Alt Key"是持久的员工成员密钥,通过员工属性的变化保持不变?您可以使用Alt Key作为其叶级别键,使Employee维度(或Employee维度内的层次结构)略有不同。如果您还没有将SK作为维度属性,则会使维度表格“崩溃”#34;每个AltKey成一个成员,而不是每个SK一个成员。显然,您不能将任何SCD2属性添加到此Alt Key层次结构中,因为每个键不会是单个值;这会引起特别的问题,关于呼叫耐用的"员工" (即叶级别的名称列将是什么),因为员工姓名是最明显的SCD2属性之一,不会保持不变。可能这种方法最好与潜在的" Type6"包含"当前价值"在尺寸数据中,如上面(1)中所述。