我正在关注Kimball的“数据仓库工具包”一书,我对员工维度和人力资源快照事实表的示例感到困惑。
以下是本书中给出的示例的屏幕截图:
我对“员工人数”,“新员工人数”,“转账人数”和“促销计数”字段感到困惑。正如您所看到的,HR事实表和Employee维度表之间存在关系,但在这些计数值的情况下,哪个密钥将在事实表中分配?我知道月底可能会有一个“新员工数量”,我们会在事实表中指向那个月的月度维度FK,但是员工维度键呢?
我希望我能在这里说清楚,如果这是一个愚蠢的问题,我很抱歉。
感谢。
答案 0 :(得分:0)
柱头,
我相信来自Employee Transaction Dimension
的最新行的代理键是事实表中包含的内容。本月Employee Transaction Dimension
中可能有多行,但在给定月份的事实表行中只会引用最近的一行。
希望这有帮助。
最诚挚的问候, 杰西戴森
答案 1 :(得分:0)
在SCD(类型2或类型3)中,您想要考虑两种类型的键;自然键和伪键。自然键是"现实世界"我会理解,在Employee维度的例子中,这可能是某种员工ID。每次向此表添加一个条目时,您都会获得一个新的伪密钥,我想将其视为" as-was"键。它表示该维度成员的状态"因为它是",当添加记录时。
随着时间的推移,在SCD中,每个自然键会有很多很多记录,每个记录都有自己的" as-was"键。考虑到最近的进入,它是" as-was"关键也是" as-is" key,因为它代表当前状态。
在事实表格中,您应该总是希望找到" as-was"键。如果你要假设事实表总是保持"原样"键或最近的键,然后它假定您将返回并更新事实表中的历史记录,因为维度的属性已更改。这对于开始来说是浪费资源,并且实际上是适得其反的,因为SCD的主要好处之一就是能够做到“原样”和“原样”#34;分析,要做到这一点,你需要保留" as-was"状态。