我正在使用“数据仓库工具包”中概述的 Kimball 方法设计 HR 数据集市。
根据 Kimball 的设计,我计划有一个带有时间戳的、缓慢变化的维度来跟踪员工资料的变化(以支持对员工状态的时间点分析)和一个人数统计定期快照事实表来支持度量新员工、离职人员、休假、已付工资等。
我遇到的问题是,在某些情况下,我们的员工可以分配到多个角色/工作,并且每个人都需要单独跟踪(即我的事实的粒度必须在工作级别,而不是员工级别) .
Kimball 设计如何适应员工和角色/工作形成这样的层次结构的场景?理想情况下,我希望避免为分配给员工的每个角色/工作重复员工档案数据(地址、人口统计等),但这是否意味着我需要对维度进行雪花化?
我一直在考虑的选项包括以下内容 - 我会对社区对此的任何想法或建议感兴趣,因此欢迎所有意见!
1)(见附件,设计 1)一种雪花式方法,其中员工表具有一对多链接角色表,而角色表又与事实表具有一对多链接。这里的优点是干净的员工维度,但我不想引入不必要的复杂性。有什么理由不应该将两个维度直接链接到事实表?我见过的雪花设计似乎没有这样做。
2)(见附件,设计 2)一个组合的员工/角色维度,其中每个员工都有每个分配角色的记录,但只有一个记录被标记为“主要角色”。可以通过约束“主要角色”标志来执行维度上的时间点查询。