0

我有一个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[Operating Expenses] (&[58]) member.

(请下载并更新与本地AW多维数据集的连接)

AdventureWorks 示例

4

1 回答 1

1

想通了,关键是使用动态集

创建以下动态集。

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

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

descendants函数返回目标“运营费用”(键 &[58])成员下方的所有叶成员。这包括所有子节点,无论后代叶成员是否已在 excel 中被选择/过滤。

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

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

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

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

[Operating Profit] = [Gross Margin] - [Operating Expenses]
于 2015-03-10T05:18:44.790 回答