我有一个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
多维数据集的连接)
答案 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]