【发布时间】:2015-11-24 18:31:55
【问题描述】:
我正在使用 Excel 2013 和 SSAS 2014。我正在尝试根据报表上下文将多个成员组合在一起以生成报表。
我正在尝试通过创建一个包含我要分组的所有成员的自定义成员来实现这一点。如果我对成员进行硬编码,它可以正常工作,但使用 MDX,它会失败。
这行得通:
[Terminals].[Terminal].[Terminal 1] + [Terminals].[Terminal].[Terminal 2]
这不起作用:
Union([Terminals].[Terminal].[Terminal 1], [Terminals].[Terminal].[Terminal 2])
根据 + 运算符的documentation:
+(联合)运算符在功能上等同于联合(MDX)函数。
但情况并非如此,因为用加号代替并集函数不会产生相同的结果。我在 MDX 参考中找不到加号运算符的替代形式。
我最终要做的是通过数据定义的规则过滤层次结构中的成员:
Filter(
[Terminals].[Terminal].Children,
ClosingPeriod([Date].[By Week].[Date], [Measures].[Days])
)
上述函数返回一组终端,其中记录存在于查询中所选期间的最后一天。用户可能希望在报告中包含或排除这些内容。
如何在 Excel 中为计算成员使用 MDX 集?
更新:
以下 Greg 的建议适用于使用以下语法的过滤器:
Aggregate(
FILTER(
NonEmpty([Terminals].[Terminal ID].Members),
(ClosingPeriod([Date].[By Week].[Date]),[Measures].[Days]) = 1
)
)
请注意,Children 不起作用,但 Members 起作用。
【问题讨论】:
-
“不起作用”是什么意思?有错误信息吗?
-
它给出了完全模糊的错误消息“函数需要一个元组集表达式为 1 参数。使用了字符串或数字表达式”
标签: excel ssas mdx pivot-table