我是 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)。
有人能帮我吗 ??非常感谢 !