我是数据仓库设计的初学者。我有一些理论,但最近遇到了一个OLAP多维数据集设计的实际问题。我使用星型模式。
可以说我有2个维表和1个事实表:sum and distinct-count measures(star schema design koan)
尺寸地名:
dimension_id
COUNTRY_NAME
province_name
district_name
尺寸装置:
dimension_id
DEVICE_CATEGORY
device_subcategory
事实表:
gazetteer_id
device_dimension_id
hazard_id(测量柱)
area_m2(测量柱)
一个“商业对象”(实际上是一个矿场)可以有多个设备,位于一个地点(地名词典)和o个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倍。例如,上面的数据会给18000平方米。
你会如何解决这个问题?
我正在使用Pentaho堆栈。
在此先感谢
如果一个危险标识是一个雷区,并且你正在寻找每个地雷的地雷和大小的地雷,那么也许你可以设置一个危险区域来保存危险区域;或者可能在DeviceDimension表中创建空设备条目,并且只有空设备条目获取area_m2集合,则真实设备获取area_m2 = 0。 – Jamie 2012-04-23 23:57:16