【问题标题】:How do I use use an MDX set for a calculated member in Excel?如何在 Excel 中为计算成员使用 MDX 集?
【发布时间】: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


【解决方案1】:

如果您将计算的成员添加到终端维度,那么这将起作用:

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

【讨论】:

  • 嗨,格雷格.. 有点跑题了,但我可以请您动动脑筋:我最近在一些稍微复杂的脚本中发现了一些自定义元素,其中包括我需要使用的聚合Solve_order ... Aggregate 是否在处理顺序中被赋予了一个值得关注的特殊位置?
  • 用过滤器替换联合失败:( Aggregate( FILTER( NonEmpty([Terminals].[Terminal ID].Children), (ClosingPeriod([Date].[By Week].[Date]), [措施].[天]) = 1 ) )
  • 我根据您的建议将原帖更新为我取得的进展
  • 感谢您回答我的问题。我现在遇到的问题与 Excel 有关,并且构成了一个正在发布的新问题。如果您有时间,如果您能向我解释为什么您的解决方案有效,那就太好了:我担心有些基本的东西我不理解。另外,为什么我必须将我的 FILTER 包装在一个 SET 中才能在计算成员中使用它
  • 很高兴为您提供帮助。我想知道这是否是一个无限递归错误? [Terminals].[Terminal ID].Children 将引用您的计算成员 Is Active。也许该集合确保在计算成员之前评估该集合?我不知道。不动手就很难知道你的立方体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多