0

我正在使用“数据仓库工具包”中概述的 Kimball 方法设计 HR 数据集市。

根据 Kimball 的设计,我计划有一个带有时间戳的、缓慢变化的维度来跟踪员工资料的变化(以支持对员工状态的时间点分析)和一个人数统计定期快照事实表来支持度量新员工、离职人员、休假、已付工资等。

我遇到的问题是,在某些情况下,我们的员工可以分配到多个角色/工作,并且每个人都需要单独跟踪(即我的事实的粒度必须在工作级别,而不是员工级别) .

Kimball 设计如何适应员工和角色/工作形成这样的层次结构的场景?理想情况下,我希望避免为分配给员工的每个角色/工作重复员工档案数据(地址、人口统计等),但这是否意味着我需要对维度进行雪花化?

我一直在考虑的选项包括以下内容 - 我会对社区对此的任何想法或建议感兴趣,因此欢迎所有意见!

1)(见附件,设计 1)一种雪花式方法,其中员工表具有一对多链接角色表,而角色表又与事实表具有一对多链接。这里的优点是干净的员工维度,但我不想引入不必要的复杂性。有什么理由不应该将两个维度直接链接到事实表?我见过的雪花设计似乎没有这样做。

2)(见附件,设计 2)一个组合的员工/角色维度,其中每个员工都有每个分配角色的记录,但只有一个记录被标记为“主要角色”。可以通过约束“主要角色”标志来执行维度上的时间点查询。

在此处输入图像描述

4

1 回答 1

1

任何发生的事情都是一个事件,并且可以是一个事实。当您查看数据之间的关系时,您还需要询问数据值是描述实体(暗淡)还是实体(事实)发生/发生的事情。一切都可能是暗淡或事实。(有时两者兼而有之)

工作描述发生在员工身上的事件。您应该有一个与 Dim 员工和 Dim 工作(以及您的日期维度)相关的事实员工工作。然后,这将允许您按员工和工作细分缺勤情况。您的暗淡工作实际上只是职位名称、工资等级等。事实将包含生效日期。研究无事实的事实表。

请注意,您的空缺参考将是一个单独事实的一部分(您何时/何处发布它,有多少申请人都是关于空缺的可衡量事实)。这也可能是退化维度的一个例子。

我不喜欢你每月的事实。我认为这应该只是基于事实缺勤和事实雇员工作的一些计算措施。当这些事件被放在你的维度上时,你可以按日期、工作类型、经理等来分解它们。

于 2019-06-12T14:15:53.333 回答