2014-10-20 52 views
0

我正在嘗試編寫一個olap4j(Mondrian)查詢,該查詢將按範圍對行進行分組。 假設我們有每個孩子和孩子年齡的卡片數量。 我想根據年齡範圍來計算卡的數量,所以我會計算年齡0-5,5-10,10-15等等。 這可以用olap4j完成嗎?olap4J - 計算成員分組

回答

1

您需要定義計算成員爲:

With member [Age].[0-4] as [Age].[0]:[Age].[4] 
member [Age].[5-9] as [Age].[5]:[Age].[9] 

或者,你可能要重新設計你的維度表。我猜你的年齡在事實表中是退化的維度。我建議創建一個單獨的維度dim_age像這樣的結構:

age_id, age, age_group 
0, null, null 
1, 0, 0-4 
2, 1, 0-4 
(...) 

然後可以很容易地定義基於該AGE_GROUP尺寸的第一級。

+0

是的,這是一個不錯的想法,但我的範圍大小是動態的。因此,預先定義表格中的範圍不會起到訣竅的作用。 – 2014-10-22 07:20:06

+0

在這種情況下,您需要在查詢時創建它們。如果它們是動態的「但不是那麼多」,則可以在維度中定義多個分組。 – nsousa 2014-10-22 07:37:46

+0

這可能與沒有MDX的olap4j api? – 2014-10-22 11:19:51