如何在不同的olap维度级别请求不同的唯一成员

时间:2013-06-19 16:06:49

标签: mdx olap

我是MDX的新手,很长一段时间我都试图用我的维度解决问题,也许有人可以帮助我更好地理解它,为什么不能找到解决方案。

上下文

以下是我组织的一部分的定义(我简化了)

<Dimension type="StandardDimension" visible="true" highCardinality="false" name="Organization" caption="organization hierarchy" description="organization hierarchy of the user">
  <Hierarchy visible="true" hasAll="true" primaryKey="organizationid">
    <Table name="organization">
    </Table>
    <Level name="Company" visible="true" column="institution" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="IfBlankName">
    </Level>
    <Level name="Division" visible="true" column="site" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="IfBlankName">
    </Level>
    <Level name="Department" visible="true" column="department" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="IfBlankName">
    </Level>
  </Hierarchy>
</Dimension>

每个用户都链接到一个组织,例如查看此表

    organizationid, company, division, department
    1, Fruit&Co, Juice, Production
    2, Fruit&Co, Juice, Marketing
    3, Fruit&Co, Cake, Production
    4, Fruit&Co, Cake, Marketing
    5, ChocoLtd, Drinks, Production

每个机构都有自己的组织,其级别高于样本中的3个。

问题

我想要请求不同的东西,有时在特定级别上使用聚合,所以我使用DESCENDANTS函数动态创建我的MDX请求。

例如

    SELECT
      [Time].[2013] ON COLUMNS,
      DESCENDANTS(organization.[Fruit&Co],[department]) ON ROWS
    FROM [Working]
    WHERE (Measures.[Nb days])

这里开始我的问题,结果显示我4行而不是2

    Production, 120   // in fact the sum of nb days for Juice & Cake divisions
    Marketing, 30   // sum for the 2 divisions
    Production, 120   // again, the same first row ???
    Marketing, 30   // the same second row

如果我将unique Members =“true”更改为uniqueMembers =“false”,我有

    Production, 100 // Juice results
    Marketing, 25
    Production, 20 // cake results
    Marketing, 5

如何只为我所选择的公司选择一个具有相同级别名称的分组的聚合,与她的父母无关?

    Production, 120
    Marketing, 30 

备注:我正在使用pentaho mondrian。 我尝试使用DISTINC(DESCENDANTS(...)),但没有变化(我认为这是因为我对每个级别成员都有不同的组织结构)。

有人能帮帮我吗? 非常感谢!

0 个答案:

没有答案