1

我是 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, 公司, 部门, 部门
    1、Fruit&Co、果汁、生产
    2、Fruit&Co、果汁、营销
    3、Fruit&Co、蛋糕、生产
    4、Fruit&Co、蛋糕、营销
    5,ChocoLtd,饮料,生产

每个机构都有自己的组织,层次比样本中的 3 个多。

问题

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

例如

    选择
      [时间].[2013] 在列上,
      DESCENDANTS(organization.[Fruit&Co],[department]) ON ROWS
    从[工作]
    WHERE(措施。[Nb 天])

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

    生产,120 // 实际上是果汁和蛋糕部门的 nb 天总和
    营销,30 // 2 个部门的总和
    生产,120 // 再次,相同的第一行 ???
    Marketing, 30 // 相同的第二行

如果我将 unique Members = "true" 更改为 uniqueMembers="false" 我有

    生产,100 // 果汁结果
    市场营销,25
    生产,20 // 蛋糕结果
    市场营销,5

如何只有我选择的公司的聚合,具有一组相同级别的名称,独立于她的父母?

    生产,120
    市场营销,30

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

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

4

0 回答 0