总和和不同计数措施(星型模式设计公案)

Posted

技术标签:

【中文标题】总和和不同计数措施(星型模式设计公案)【英文标题】:sum and distinct-count measures (star schema design koan) 【发布时间】:2012-04-20 08:42:41 【问题描述】:

我是数据仓库设计的初学者。我有一些理论,但最近遇到了一个 OLAP 多维数据集设计的实际问题。我使用星型模式。 假设我有 2 个维度表和 1 个事实表:


维度地名录: 维度ID 国家名称 省名 区名


次元装置: 维度ID 设备类别 设备子类别


事实表: 地名词典 device_dimension_id hazard_id(度量列) area_m2(测量列)


一个“业务对象”(实际上是一个雷区)可以有多个设备,位于一个位置(地名词典)并占用 X 平方米。 因此,为了了解存在哪些设备类别,我为每个处于危险中的设备创建了一个事实,如下所示:

+--------------+---------------------+-----------------------+-----------+
| gazetteer_id | device_dimension_id | hazard_id             | area_m2   |
+--------------+---------------------+-----------------------+-----------+
| 123          | 321                 | 0a0a-502c-11aa1331e98 | 6000      |
+--------------+---------------------+-----------------------+-----------+
| 123          | 654                 | 0a0a-502c-11aa1331e98 | 6000      |
+--------------+---------------------+-----------------------+-----------+
| 123          | 987                 | 0a0a-502c-11aa1331e98 | 6000      |
+--------------+---------------------+-----------------------+-----------+

我将度量“危害数”定义为 hazard_id 的不同计数。 我还将“总面积占用”度量定义为 area_m2 的总和。 现在我可以使用维度地名词典和设备,并知道给定维度成员有多少危险。 但问题是 area_m2:因为它被定义为一个和,它给出的值是实际面积的 n 倍,其中 n 是危险对象的第 th 个设备数。例如,上面的数据将给出 18000 平方米。 你会如何解决这个问题?

我正在使用 Pentaho 堆栈。

提前致谢

【问题讨论】:

如果一个 hazard-id 是一个雷区,并且您正在查看 mines-per-gazetter & size-of-minefields-by-gazetteer,也许您可​​以创建一个 Hazard 维度,其中包含危险区域;或者可能在DeviceDimension表中创建一个Null-device条目,并且只有Null-device条目获取area_m2设置,真实设备获取area_m2=0。 【参考方案1】:

[从评论中移出]

如果一个 hazard-id 是一个雷区,并且您正在查看按地区(地名)和大小地名的雷区,也许您可​​以创建一个 Hazard 维度,其中包含危险;或者可能在DeviceDimension表中创建一个Null-device条目,并且只有Null-device条目获取area_m2设置,真实设备获取area_m2=0。

如果您需要回答以下问题:包含设备 321 的雷区总面积,则第二种方法不会轻易回答这些问题,这表明制定危险维度可能是更好的方法。

我还会考虑添加一个设备计数事实,它可以包含每种危害的每种类型的设备数。

【讨论】:

感谢杰米的回复。选项(1)创建一个危险维度:我相信它会很难使用,因为没有层次结构的区域(成千上万)会有很多单个条目。带有空设备的选项(2)是一个好主意,但是您的示例是对的,我不知道如何实现,至少在 pentaho 中。事实表中的选项 (3) addical number-of-devices-per-field-count 列:我正在考虑它。它可以作为总面积的反向划分,但不适用于请求多个设备的查询...

以上是关于总和和不同计数措施(星型模式设计公案)的主要内容,如果未能解决你的问题,请参考以下文章

在星型模式表设计中包含关系有啥好处?

尝试设计涉及“租赁类型”的星型模式

如何设计星型模式

星型模式设计的一般理解

三个例子,让你看懂数据仓库多维数据模型的设计

设计数据仓库/星型模式 - 选择事实