MDX中的中值函数(Pentaho-Mondrian)

MDX中的中值函数(Pentaho-Mondrian),mdx,pentaho,median,mondrian,Mdx,Pentaho,Median,Mondrian,我试图在MDX中实现中值函数。我特别想计算维度“区域”中每个成员的度量“数量”的中位数。为此,我首先编写了以下MDX查询: with member [measures].[X] as median([Regions].members, [measures].[Amount]) select {[Regions].members} on rows, {[measures].[X]} on columns from [product] 但是,上面的查询将计算“区域”中每个成员的平均

我试图在MDX中实现中值函数。我特别想计算维度“区域”中每个成员的度量“数量”的中位数。为此,我首先编写了以下MDX查询:

with member [measures].[X] as median([Regions].members, [measures].[Amount])
select {[Regions].members} on rows, 
       {[measures].[X]} on columns
from [product]
但是,上面的查询将计算“区域”中每个成员的平均“金额”,然后返回这些(平均)值的中位数

为了解决这个问题,我使用一个“Productid”维度重写了上面的查询,该维度为多维数据集的每个产品分配一个唯一的id:

with member [measures].[X] as median([productid].members, [measures].[Amount])
select {[Regions].members} on rows, 
       {[measures].[X]} on columns
from [product]

上述查询正确地返回了“区域”中每个成员的“金额”中值。问题是,查询的计算代价似乎很高,并且会挂起。我想知道是否有更优雅的方法来解决这个问题。

1。中位数是在一个集合上计算的。在这种情况下,它会是一套产品吗?2.所谓优雅,您是指性能更好的MDX吗?是的,它将是由产品id定义的产品集。我主要关心的是执行速度。
ProductID
维度或“Region”维度的成员基数是否非常大?不是。我们谈论的是一个数字或行数低于一百万的立方体。中值计算应与平均值一样快,但速度明显较慢。@denim:Mondrian似乎在MDX聚合中存在性能问题,尤其是在需要大量单元格的情况下。通过增加
mondrian.properties
文件中的
mondrian.rolap.cellBatchSize
(默认值为100000)和增加java max内存(如果内存不足),可以提高性能。但尽管如此,业绩仍可能很差。