当子成员在Excel中过滤时,Adventureworks MDX计算不更新成员

时间:2015-03-09 20:22:10

标签: excel ssas mdx adventureworks

我有一个MDX计算问题。

基本上,立方体中的计算是

[Operating Profit] = [Gross Margin] - [Operating Expenses]

当我使用excel过滤掉[Operating Expenses]的子成员时,此计算不会更新。例如取消选中[Labor Expenses] 营业利润应该改变,但它仍然是静态的。

我在Excel2013中创建了以下计算成员作为测试,但这也是静态的。

WITH MEMBER [Account].[Accounts].[Operating Profit Calc] as 
[Account].[Accounts].&[49] - [Account].[Accounts].&[58]

我花了一些时间尝试使用MDX existing function,但我无法将其与Descendants的{​​{1}}一起使用。

(请下载并更新与本地[Operating Expenses] (&[58]) member多维数据集的连接)

AdventureWorks example

1 个答案:

答案 0 :(得分:1)

想出来,关键是使用动态集

创建以下动态集。

create hidden dynamic set currentcube.[OPEX_dyn] as { intersect( existing [Account].[Accounts].members , descendants([Account].[Accounts].&[58],,LEAVES) ) };

mdx existing函数获取excel中处于活动状态(已选中)的维度中的所有成员。

descendants函数返回目标下面的所有叶子成员"运营费用" (关键& [58])成员。这包括所有孩子,无论后代叶子成员是否已被选中/过滤。

intersect函数基本上将existing功能应用于目标成员的后代,返回目标下选定的一组叶子成员。

通过添加以下计算成员,仅聚合目标成员的所选子项/ desc

WITH MEMBER [Account].[Accounts].[OPEX dynamic] as sum([OPEX_dyn],[Measures].currentmember)

以上示例仅部分解决AdventureWorks多维数据集中的初始计算,因为AW多维数据集使用分支级别的加号和减号一元运算符进行聚合,而此方法仅对叶子成员求和。 即。

[Operating Profit] = [Gross Margin] - [Operating Expenses]