如何调用蒙德里安的措施?

时间:2014-05-20 02:20:38

标签: mdx olap mondrian

我尝试使用OLAP连接创建简单的Mondrian架构,但我遇到了问题 我有两个Measures。但是当我打电话给它时,它只会调用一个measures。我是Mondrian和OLAP的新人 我的架构看起来像这样。

<Schema name="Test">
  <Cube name="Report1" visible="true" cache="true" enabled="true">
    <Table name="mstjobs" schema="public">
    </Table>
    <Dimension type="StandardDimension" visible="true" foreignKey="regionid" highCardinality="false" name="Reg">
      <Hierarchy name="hiReg" visible="true" hasAll="true" allMemberName="All Region" primaryKey="code1">
        <Table name="mstlov" schema="public" alias="">
        </Table>
        <Level name="Category" visible="true" table="mstlov" column="cat" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
        </Level>
        <Level name="ListRegion" visible="true" table="mstlov" column="desc1" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Dimension type="StandardDimension" visible="true" foreignKey="titleid" highCardinality="false" name="Title">
      <Hierarchy visible="true" hasAll="true" allMemberName="All Title" primaryKey="code1">
        <Table name="mstlov" schema="public">
        </Table>
        <Level name="Category" visible="true" column="cat" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
        </Level>
        <Level name="Title" visible="true" column="desc1" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Measure name="mtot" column="mantotal" datatype="Integer" aggregator="sum" visible="true">
    </Measure>
    <Measure name="wtot" column="womantotal" aggregator="sum" visible="true">
    </Measure>
  </Cube>
</Schema>`

我只是通过简单的MDX查询来调用它

    Select 
       Reg.[All Region].region on COLUMNS,
       Title.[ALl Title].titlekhas on ROWS
    from Report1

输出看起来像这样,有mtot个度量。

|           |City1   |City2   |City3   |
|           |20      |30      |30      |
|Job1       |10      |20      |10      |
|Job2       |10      |10      |20      |

但我想把所有措施放在一起。所以,输出应该是这样的。

|           |City1   |City2  |City3   |
|           |20  |10 |30 |20 |30 |25  |
|Job1       |10  |10 |20 |10 |10 |10  |
|Job2       |10  |0  |10 |10 |20 |15  |

我该怎么办?我应该更改架构吗?

1 个答案:

答案 0 :(得分:0)

如果您没有指定度量,它将使用第一个作为默认值。

使用

  Select 
   [Reg].[region] on COLUMNS,
   [Title].[titlekhas] on ROWS
from Report1
where [Measures].[wtot]

代替。

或者,您也可以使用

  Select 
   {[Reg].[region]} * {[Measures].[wtot]} on COLUMNS,
   [Title].[titlekhas] on ROWS
from Report1

  Select 
   [Reg].[region] * {[Measures].[wtot], [Measures].[mtot] } on COLUMNS,
   [Title].[titlekhas] on ROWS
from Report1

显示两个指标。

说明: - 即使不需要,在引用尺寸,水平或成员时也应始终使用括号; - 您不需要在维度后添加所有成员名称,您可以直接跳到第一级成员; - 我不建议对措施,级别或维度使用此类“编码”名称。 [Measures].[wtot][Measures].[Women Total]更难阅读。