如何为 Excel 中的计算成员使用 MDX 集?
How do I use use an MDX set for a calculated member in Excel?
我正在使用 Excel 2013 和 SSAS 2014。我正在尝试根据报告上下文将多个成员分组到一个报告中。
我试图通过创建一个自定义成员来完成此操作,该成员包含我要分组的所有成员。如果我对成员进行硬编码,它工作正常,但使用 MDX,它失败了。
这个有效:
[Terminals].[Terminal].[Terminal 1] + [Terminals].[Terminal].[Terminal 2]
这行不通:
Union([Terminals].[Terminal].[Terminal 1], [Terminals].[Terminal].[Terminal 2])
根据 + 运算符的 documentation:
The + (Union) operator is functionally equivalent to the Union (MDX) function.
然而,情况并非如此,因为用加号代替并集函数不会产生相同的结果。我在 MDX 参考中找不到加号运算符的替代形式。
最终我要做的是通过数据定义的规则过滤层次结构中的成员:
Filter(
[Terminals].[Terminal].Children,
ClosingPeriod([Date].[By Week].[Date], [Measures].[Days])
)
上述函数returns一组终端,其中在查询中选择的时间段的最后一天存在记录。用户可能希望从报告中包含或排除这些内容。
如何为 Excel 中的计算成员使用 MDX 集?
更新:
Greg 的以下建议适用于使用以下语法的过滤器:
Aggregate(
FILTER(
NonEmpty([Terminals].[Terminal ID].Members),
(ClosingPeriod([Date].[By Week].[Date]),[Measures].[Days]) = 1
)
)
请注意 Children 无效,但 Members 有效。
如果您要将计算成员添加到终端维度,那么这将起作用:
Aggregate(
Union([Terminals].[Terminal].[Terminal 1], [Terminals].[Terminal].[Terminal 2])
)
如果您要创建新的计算度量,请执行以下操作:
Aggregate(
Union([Terminals].[Terminal].[Terminal 1], [Terminals].[Terminal].[Terminal 2])
,[Measures].[Your Other Measure]
)
可以将相同的模式应用于更复杂的 Filter() 表达式。
我正在使用 Excel 2013 和 SSAS 2014。我正在尝试根据报告上下文将多个成员分组到一个报告中。
我试图通过创建一个自定义成员来完成此操作,该成员包含我要分组的所有成员。如果我对成员进行硬编码,它工作正常,但使用 MDX,它失败了。
这个有效:
[Terminals].[Terminal].[Terminal 1] + [Terminals].[Terminal].[Terminal 2]
这行不通:
Union([Terminals].[Terminal].[Terminal 1], [Terminals].[Terminal].[Terminal 2])
根据 + 运算符的 documentation:
The + (Union) operator is functionally equivalent to the Union (MDX) function.
然而,情况并非如此,因为用加号代替并集函数不会产生相同的结果。我在 MDX 参考中找不到加号运算符的替代形式。
最终我要做的是通过数据定义的规则过滤层次结构中的成员:
Filter(
[Terminals].[Terminal].Children,
ClosingPeriod([Date].[By Week].[Date], [Measures].[Days])
)
上述函数returns一组终端,其中在查询中选择的时间段的最后一天存在记录。用户可能希望从报告中包含或排除这些内容。
如何为 Excel 中的计算成员使用 MDX 集?
更新:
Greg 的以下建议适用于使用以下语法的过滤器:
Aggregate(
FILTER(
NonEmpty([Terminals].[Terminal ID].Members),
(ClosingPeriod([Date].[By Week].[Date]),[Measures].[Days]) = 1
)
)
请注意 Children 无效,但 Members 有效。
如果您要将计算成员添加到终端维度,那么这将起作用:
Aggregate(
Union([Terminals].[Terminal].[Terminal 1], [Terminals].[Terminal].[Terminal 2])
)
如果您要创建新的计算度量,请执行以下操作:
Aggregate(
Union([Terminals].[Terminal].[Terminal 1], [Terminals].[Terminal].[Terminal 2])
,[Measures].[Your Other Measure]
)
可以将相同的模式应用于更复杂的 Filter() 表达式。