根据在ON ROWS中选择的维度创建动态计算成员

时间:2014-06-13 13:37:17

标签: mdx pentaho mondrian

有没有办法根据ON ROWS选择的尺寸创建动态计算成员? 我有以下两个维度[Dim1]。[Dim1]和[Dim2]。[Dim2],带有一个度量[Measures]。[Measure]和一个计算成员[Measures]。[CalculatedMeasure]:

 WITH MEMBER [Measures].[CalculatedMeasure] AS 
 IIF([Dim1].[Dim1]**.....IS SELECTED ON ROWS.........**,
 [Measures].[Measure]
 /
 ([Measures].[Measure], [Dim1].[Dim1].CurrentMember.Parent),

 [Measures].[Measure]
  /
  ([Measures].[Measure], [Dim2].[Dim2].CurrentMember.Parent))

  SELECT {[Measures].[Measure],[Measures].[CalculatedMeasure]} ON COLUMNS ,
  {[Dim2].[Dim2].Members)} ON ROWS
  FROM [DataBase]

我想要的是当我选择[Dim2]。[Dim2] ON ROWS时,计算出的成员应该是

的结果
 [Measures].[Measure]
  /
 ([Measures].[Measure], [Dim2].[Dim2].CurrentMember.Parent)

ELSE

 [Measures].[Measure]
  /
 ([Measures].[Measure], [Dim1].[Dim1].CurrentMember.Parent)

由于

1 个答案:

答案 0 :(得分:0)

在Analysis Services中,您的[Dim1].[Dim1]**.....IS SELECTED ON ROWS.........**可以编码为

Axis(1).Item(0).Item(0).Hierarchy IS [Dim1].[Dim1]

如果你可以假设行上只有一个层次结构。

这里,Axis(1)返回行轴设置。我不确定Pentaho / Mondrian是否支持此功能。然后,第一个Item(0)选择该集合的第一个元组,第二个元组返回该元组的第一个成员。最后,Hierarchy函数返回成员的层次结构。

要将此扩展到包含行中最多三个层次结构的查询,您可以编写

Axis(1).Item(0).Item(0).Hierarchy IS [Dim1].[Dim1] OR
Axis(1).Item(0).Item(1).Hierarchy IS [Dim1].[Dim1] OR
Axis(1).Item(0).Item(2).Hierarchy IS [Dim1].[Dim1]