数据仓库/BI 建模:事实还是维度?
Data Warehouse / BI modeling: Fact or Dimension?
我正在使用著名的 facts/dimensions 星型方案构建数据仓库。
目前正在实施员工绩效数据。
我有两个来源:
- 我得到的票务系统
fact: spent time, billed amount
dimension: Employee, Date, Customer, type-of-time (billed, not-billed, internal, service, driving-time ...)
- 计时系统,我得到
fact: worked hours
dimension: Employee, Date
"correct" 方法是什么:
A. 将工作时间添加为单独的事实?
B. 只是有一个 "time spent" 事实并将工作时间作为一个维度添加到时间类型维度中?
目标是创建一个仪表板,其中包含计费时间与工作时间、未计费时间等信息。
根据 OP 的建议,这里我的评论作为答案:
这取决于您的事实结构/聚合级别。示例:员工 A 在 2020 年 3 月 2 日工作 9.5 小时。他为客户 X 工作 4 小时,为客户 Y 工作 5 小时。此外,他还有 30 分钟的休息时间(不计费)。您的票务系统肯定包含 2 行 - 每个客户一行。时钟系统只有一个聚合行,因为它不区分客户。因此,在这种情况下,我建议为工作时间创建一个单独的事实 table。
我正在使用著名的 facts/dimensions 星型方案构建数据仓库。 目前正在实施员工绩效数据。
我有两个来源:
- 我得到的票务系统
fact: spent time, billed amount dimension: Employee, Date, Customer, type-of-time (billed, not-billed, internal, service, driving-time ...)
- 计时系统,我得到
fact: worked hours dimension: Employee, Date
"correct" 方法是什么:
A. 将工作时间添加为单独的事实?
B. 只是有一个 "time spent" 事实并将工作时间作为一个维度添加到时间类型维度中?
目标是创建一个仪表板,其中包含计费时间与工作时间、未计费时间等信息。
根据 OP 的建议,这里我的评论作为答案:
这取决于您的事实结构/聚合级别。示例:员工 A 在 2020 年 3 月 2 日工作 9.5 小时。他为客户 X 工作 4 小时,为客户 Y 工作 5 小时。此外,他还有 30 分钟的休息时间(不计费)。您的票务系统肯定包含 2 行 - 每个客户一行。时钟系统只有一个聚合行,因为它不区分客户。因此,在这种情况下,我建议为工作时间创建一个单独的事实 table。