当在Excel中过滤子成员时,Adventureworks MDX计算不会更新成员
我有一个MDX
计算问题。
基本上在立方体中的计算是
[Operating Profit] = [Gross Margin] - [Operating Expenses]
当我使用excel
过滤掉[Operating Expenses]
子成员时,这个计算不会更新。 例如取消选中[Labor Expenses]
营业利润应该改变,但是它保持不变。
我在Excel2013中创build了以下计算成员作为testing,但是这也是静态的。
WITH MEMBER [Account].[Accounts].[Operating Profit Calc] as [Account].[Accounts].&[49] - [Account].[Accounts].&[58]
我已经花了一些时间尝试MDX existing function
,但我无法得到这与[Operating Expenses] (&[58]) member
的Descendants
[Operating Expenses] (&[58]) member
。
(请下载并更新连接到您当地的AW
多维数据集)
AdventureWorks例子
想通了,关键是要用dynamic设置
创build以下dynamic集。
create hidden dynamic set currentcube.[OPEX_dyn] as { intersect( existing [Account].[Accounts].members , descendants([Account].[Accounts].&[58],,LEAVES) ) };
mdx existing
函数在维度中的所有成员在Excel中处于活动状态(选中状态)。
descendants
函数返回目标“操作费用”(key&[58])成员下的所有叶子成员。 这包括所有的孩子,不pipe后代叶子成员是否在excel中被选中/过滤。
intersect
函数基本上将existing
function应用于目标成员的后代,返回被select的目标下的一组叶子成员。
通过添加以下计算的成员,仅聚合目标成员的选定子/ desc
WITH MEMBER [Account].[Accounts].[OPEX dynamic] as sum([OPEX_dyn],[Measures].currentmember)
上面的例子只能部分解决AdventureWorks立方体中的初始计算问题,因为AW立方体在分支级别使用正负号一元运算符进行聚合,而此方法将只求和叶子成员。 即
[Operating Profit] = [Gross Margin] - [Operating Expenses]