2012-04-20 93 views
0

我是數據倉庫設計的初學者。我有一些理論,但最近遇到了一個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堆棧。

在此先感謝

+0

如果一個危險標識是一個雷區,並且你正在尋找每個地雷的地雷和大小的地雷,那麼也許你可以設置一個危險區域來保存危險區域;或者可能在DeviceDimension表中創建空設備條目,並且只有空設備條目獲取area_m2集合,則真實設備獲取area_m2 = 0。 – Jamie 2012-04-23 23:57:16

回答

0

如果危險-ID是一個雷區,而你正在尋找礦井逐區(gazetter)&大小的-minefields- [從評論移動]根據地名錄,也許你可以做一個危險的維度,其中包含危險區域;或者可能在DeviceDimension表中創建空設備條目,並且只有空設備條目獲取area_m2集合,則真實設備獲取area_m2 = 0。

如果您需要回答這樣的疑問:含設備321雷區總面積,第二種方法是不會輕易回答這些問題,這表明製造危險維度可能是更好的方法。

我也會考慮添加一個設備數量的事實,它可能有每個危險類型的數量設備。

+0

感謝傑米的迴應。 – elkarel 2012-04-25 08:09:57

+0

感謝傑米的迴應。 選項(1)做一個危險因素:我認爲這很難使用,因爲沒有等級的地區會有很多單個條目(幾十個)。 選項(2)與空設備是一個好主意,但你說得對你的例子,我不知道如何實現,至少在pentaho。 選項(3)事實表中的addicional number-of-devices-per-field-count列:我正在考慮它。它可以用作迴歸總區域,但不適用於請求多個設備的查詢... – elkarel 2012-04-25 12:34:09