如何为 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() 表达式。