设计具有混合粒度的事实表

Posted

技术标签:

【中文标题】设计具有混合粒度的事实表【英文标题】:Designing fact table with mix granularities 【发布时间】:2021-05-11 08:40:07 【问题描述】:

我正在设计一个用于报告的数据模型。在源代码中需要考虑三个表。

发票表 测试台 服务表

测试和服务是根据发票进行的。一张发票可以有多项测试和多项服务。

例如:

InvoiceId TestCount ServicCount
123 0 4
435 2 5
435 4 2

要计算总收入总金额列可以参考发票表。但是对于净收入。需要计算Test表中Testcost列和service cost中Servicescost列之和。

在为测试和服务设计事实表时。我认为最好使用两个事实表,一个用于测试,一个用于服务,因为它们具有不同的粒度,并且在报告时创建一个度量来计算两者并获得总净收入。

是否有任何其他方法可以使测试和服务细节保持一致? IE。在一个事实中混合粒度?

请提供任何有价值的见解

提前致谢

【问题讨论】:

那么,您将拥有 3 个事实表 - InvoiceFact、TestFact、ServiceFact? @CleanBold 是的。还有比这更好的建议吗? 【参考方案1】:

在同一个事实表中混合不同粒度的事实几乎是设计事实表时可能犯的最大错误。

因此,不,不可能将具有不同粒度的事实保存在同一个事实表中。

【讨论】:

以上是关于设计具有混合粒度的事实表的主要内容,如果未能解决你的问题,请参考以下文章

阿里笔记之数据模型

阿里笔记之数据模型

将一个维度加入具有不同粒度的多个事实表

在星型模式中处理多个粒度

DataWarehouse - 具有不同粒度/维度度量的事实表

如何对链接到具有不同粒度级别的多个事实的维度表进行建模?