我正在使用“数据仓库工具包”中概述的Kimball方法为HR数据集市进行设计。
根据Kimball的设计,我计划有一个时间戳记,变化缓慢的维度以跟踪员工资料更改(以支持对员工状态的时间点分析)和人员总数定期快照事实表支持新员工,离职人员,请假,带薪工资等措施。
我遇到的问题是,在某些情况下,可以将我们的员工分配到多个角色/职位,并且每个员工/职位都需要分别进行跟踪(即,我所掌握的事实必须是工作层面的,而不是工作层面的)员工级别)。
Kimball的设计如何适应员工和角色/职位形成这样的层次结构的情况?理想情况下,我想避免为分配给员工的每个角色/职位复制员工资料数据(地址,人口统计信息等),但这是否意味着我需要对维度进行修饰?
我一直在考虑的选项包括以下内容-我会对社区对此有任何想法或建议感兴趣,因此欢迎大家提供意见!
1)(请参见附件,设计1)一种雪花样式的方法,其雇员表具有一对多链接角色表,而角色表又与事实表具有一对多链接。这样做的好处是干净的员工规模,但我不想引入不必要的复杂性。我为什么不应该将两个维度直接链接到事实表?我见过的雪花设计似乎没有做到这一点。
2)(请参见附件,设计2)“员工/角色”组合维度,其中每个员工都有每个分配角色的记录,但其中只有一个被标记为“主要角色”。可以通过限制“主要角色”标志来执行有关维度的时间点查询。
答案 0 :(得分:1)
发生的任何事情都是事件,并且可以是事实。当您查看数据之间的关系时,您还需要询问数据值是描述实体(暗淡的)还是发生在实体上的(事实)。一切都可能是模糊的或事实。(有时两者都是)
工作描述了发生在员工身上的事件。您应该拥有与Dim员工和Dim职位(以及您的日期维度)相关的事实employeejob。然后,这将使您可以按员工和职位细分缺勤情况。您的昏暗工作实际上只是职位名称,薪资等级等。事实将包含生效日期。研究事实表。
请注意,您的空缺参考将是一个单独事实的一部分(您何时/何地发布空缺,多少申请人都是有关该空缺的可衡量事实)。这也可能是退化尺寸的一个例子。
我不喜欢你的每月事实。我认为这应该只是基于事实缺席和事实雇员工作的一些经过计算的度量。当这些事件超出您的规模时,您可以按日期,职位类型,经理等细分事件。