BI - 具有不相容颗粒的事实表设计

Posted

技术标签:

【中文标题】BI - 具有不相容颗粒的事实表设计【英文标题】:BI - fact table design with incompatible grains 【发布时间】:2019-05-17 22:17:40 【问题描述】:

我对 BI 设计数据库很陌生,这里有些地方我不太理解。 我正在尝试导入法国人口普查数据,在那里我得到了每个城市的人口。对于每个城市,我都有不同年龄分类的人口,它们之间并没有真正的联系。

例如,假设一个分类是 00 到 20 岁、21 到 59 岁和 60+ 另一个更精确:00 到 02、03 到 05 等,但界限与第一个分类不同:例如,我没有 15 到 20,而是 18 到 22。

所以这两个分类是不兼容的。如何在我的事实表中使用它们?我应该使用 2 个事实表和 2 个立方体吗?我应该为 1 个立方体使用一个事实表和 2 个维度吗?但是在这种情况下,当我总结一个城市的总人口时,我会重复计算事实,不是吗?

这是国家人口普查数据和国家分类,因此更改这些数据或估计人口以混合这些分类不是一种选择。需要明确的是,一排与一个人无关,而是与一个城市有关。我的事实不是个人,而是城市人口。 所以这张表就像: 第 1 行:一个城市 - 一定数量的人口 - 该人口的模糊年龄(例如 00 至 19 岁)的一个代码 - 该人口的模糊性别的代码 (m/f) - 人口普查日期 第 2 行:同一城市 - 一定数量的人口 - 该人口的低年龄(例如 20 至 34 岁)的一个代码 - 低性别的代码 (m/f) - 人口普查日期 所以它适用于很多城市,无论是性别还是多年。 一样

我希望这个问题足够清楚,因为英语不是我的母语,而且我是 DB 和 BI 的新手!

感谢您帮助我。

【问题讨论】:

我建议你把问题一分为二,不兼容的范围保留这个,第二部分打开一个新的。 关于不兼容的范围,是否可以获取实际年龄?如果这是不可能的,有办法近似一个统一的范围,但它不会是准确的。 感谢您的 2 个回答,我已经充分编辑了我的 OP。 【参考方案1】:

使用单个事实表和两个维度的年龄范围的一种可能解决方案:

1 - 基于最广泛人口普查的分类范围,例如:

年轻0-20 21-59 岁成人 60+老年人

然后,您可以使用近似值将其他人口普查与该维度联系起来,例如 18-22 可能是 Young。

2 - 原始年龄范围。当您报告单个城市时,此维度可用于精确的年龄范围,它还可以帮助您评估重叠边界的影响(例如年轻 / 18-22 范围内有多少行?)

【讨论】:

【参考方案2】:

您可以按以下方式创建一维

年轻 1-20 成人 21-59 60岁以上的老人

分类是 年轻的城市 1 : 1-20 年轻的城市 2 : 4-23

 id  field1   field2         field3          field4  .......

 1   1 year   young_city_1   other           .......
 2   2 year   young_city_1   other           .......
 3   3 year   young_city_1   other           .......
 4   4 year   young_city_1   young_city_2    .......

现在您可以从任何项目和任何部门报告

希望对你有帮助

【讨论】:

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

具有在多个事实表中发生的度量的事实表设计

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

多维数据集分区:DSV 设计器中的事实表只是多维数据集分区之一吗?

没有指向事实表的任何链接的维度

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

数仓设计--事实表