我是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(...)),但没有变化(我认为这是因为我对每个级别成员都有不同的组织结构)。
有人能帮帮我吗? 非常感谢!