组计算成员按部分相关维度聚合

时间:2014-04-15 13:02:28

标签: mdx pentaho mondrian

我使用Pentaho-CE 4.8和Saiku插件2.6,后者使用Mondrian 3.6.5。

在Mondrian架构中,我使用计算成员定义了一个虚拟多维数据集,该成员包含两个虚拟度量。这些虚拟测量来自两个具有两个共同维度的立方体。其中一个Cubes有一个退化的Dimension,它也用在虚拟Cube中。

我想通过维度对计算成员进行分组,其中只有一个虚拟指标与之相关,但此时我失败了。

伪模式:

<Time Dimension>

<Cube 1>
  <Dimension Usage: "Time Dimension"> 
  <Degenerated Dimension> 
  <Measure 1>
</Cube1>

<Cube 2>
  <Dimension Usage: "Time Dimension"> 
  <Measure 2>
</Cube 2>

<Virtual Cube>
  <Virtual Measure "Cube 1 Measure 1"> 
  <Virtual Measure "Cube 2 Measure 2"> 
  <Virtual Dimension "Time Dimension"> 
  <Virtual Dimension "Cube 1 Degenerated Dimension" 
  <Calculated Member: [Virtual Measure "Cube 1 Measure 1"] / [Virtual Measure "Cube 2 Measure 2"]
</Virtual Cube>

在saiku中,只要我不使用“Cube 1 Degenerated Dimension”,我就会获得虚拟和计算度量的结果。如果我在Rows / Colums上使用它或作为过滤器,则只显示<Virtual Measure "Cube 1 Measure 1">的值,因为此Measure来自与该维度相关的立方体。

我是否有办法/解决方法如何实现这个维度的CM?因为理论上蒙德里安可以做到以下几点:

  1. 根据“Cube 1 Degenerated Dimension”和时间维度获取虚拟测量“Cube 1 Measure 1”,最后汇总值。
  2. 仅根据时间维度获取虚拟测量“立方体2测量2”。
  3. 进行计算(Devide“Cube 1 Measure 1”/“Cube 2 Measure 2”)

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法:

使用ValidMeasure()函数如下:

    <Calculated Member: [Virtual Measure "Cube 1 Measure 1"] / ValidMeasure([Virtual Measure "Cube 2 Measure 2"])>

有效测量函数将告诉Mondrian,此测量具有可以忽略的非连接尺寸。测量2将与其他应用的尺寸连接,并且将获得一个值,然后可以将其用于计算。