Mondrian Rollup Total的尺寸

时间:2014-07-31 12:29:00

标签: pentaho olap mondrian

我希望mondrian按照我的维度表汇总。例如

fact_table(id int,dim_id)

  • 1 2
  • 2 2
  • 3 1
  • 4 3

dimension_table(dim_id,value)

  • 1 first_value
  • 2 second_value

fact_table中的最后一个值明显不在维度列表中

<Cube name="BYT">
         <Dimension type="StandardDimension" visible="true" 
                   highCardinality="false" name="d1">
    <Hierarchy name="dimension_table" visible="true" hasAll="true">
      <Table name="dimension_table">
      </Table>
      <Level name="dimension" visible="true" column="dim_id" 
            type="String" uniqueMembers="false" levelType="Regular" 
                  hideMemberIf="Never">
      </Level>
    </Hierarchy>
  </Dimension>
     <Measure name="m1"  column="id"  datatype="Integer" 
           aggregator="count" visible="true">
    </Measure>
    <Cube>

当我触发以下查询时

select [Measure].[m1] on columns, {([d1])} on rows from [BYT]

结果是

 - Dimension  Measure
 - All D1     4

我想让蒙德里亚做的事情是这样的

- Dimension  Measure
- All D1     3

即。仅计算维度表中包含的值

请提出解决方案。我通读了文档中的汇总策略,但这对我的情况没有帮助。

2 个答案:

答案 0 :(得分:0)

如果我理解你,你的立方体xml中有错误。 您应该distinct count而不是count

<Measure name="m1"  column="id"  datatype="Integer" 
       aggregator="distinct count" visible="true">
</Measure>

希望这有帮助。

答案 1 :(得分:0)

您需要使用NON EMPTY上下文,这将导致与事实表的连接。

select [Measure].[m1] on columns, NON EMPTY {([d1])} on rows from [BYT]