2014-10-20 79 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