【问题标题】:MDX query producing #Error as outputMDX 查询产生 #Error 作为输出
【发布时间】:2014-07-29 22:46:46
【问题描述】:

在我的 SSAS 多维数据集中,我有一个名为 [Sales Total] 的度量。我想做的是创建另一个衡量标准,让我获得过去 6 个月内最低的销售额。我希望这是一个移动最小值,计算为从本月到 6 个月前的每个时间段的销售额最小值。

我写了我的 MDX 语句,但它产生了一个错误,我很难找出原因。这与将日期维度成员聚合到过滤器聚合中有关。

当我从日期层次结构中选择一个月份成员时,它会返回正确的值。当我从层次结构中选择多个成员时,如下所示,它会出错。

感谢任何形式的帮助。

WITH 
MEMBER [Measures].[Min Sales Total Rolling 6 months] as '(MIN([Date].[Fiscal Month Hierarchy].currentmember.lag(6):[Date].[Fiscal Month Hierarchy].currentmember,[Measures].[Sales Total]))'
MEMBER [Date].[Fiscal Month Hierarchy].[FilterAggregate] as 
'AGGREGATE({
[Date].[Fiscal Month Hierarchy].[Quarter].&[20141].&[201310],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20141].&[201311],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20141].&[201312],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20142].&[201401],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20142].&[201402],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20142].&[201403],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20143].&[201404],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20143].&[201405],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20143].&[201406],
[Date].[Fiscal Month Hierarchy].[Quarter].&[20144].&[201407]
})'
SELECT {
[Measures].[Min Sales Total Rolling 6 months]} ON AXIS(0)
FROM [My Cube]
WHERE ([Date].[Fiscal Month Hierarchy].[FilterAggregate])

【问题讨论】:

  • 我了解 [Measures].[Min Sales Total Rolling 6 months] 但我不了解 [Date].[Fiscal Month Hierarchy].[FilterAggregate],你想用这个做什么约会成员?

标签: ssas mdx moving-average


【解决方案1】:

正如多年前在this blog by one of the SSAS developers 中所解释的,多选不适用于CurrentMember。你应该使用

MEMBER [Measures].[Min Sales Total Rolling 6 months] as 
MIN(Tail(EXISTING [Date].[Fiscal Month Hierarchy].[Fiscal Month Hierarchy].Members).Item(0).Item(0).lag(6)
    :
    Tail(EXISTING [Date].[Fiscal Month Hierarchy].[Fiscal Month Hierarchy].Members).Item(0).Item(0),
    [Measures].[Sales Total])

改为。

EXISTING 获取所有选定成员的集合。这是必需的,因为没有单一的CurrentMember。然后Tail 获取由最后一个成员组成的集合,Item(0).Item(0) 将该单个元素集合转换为一个成员。

【讨论】:

  • +1 指出多选不适用于 CurrentMember 和建议的解决方案。它仅在我从 RANGE 函数的第二个参数中删除 EXISTING 关键字时才有效。否则我得到一个错误,这是为什么呢? Range 函数需要一个用于 2 参数的成员表达式。使用了元组集表达式。
  • @Thracian 抱歉,EXISTINGs 应该在 Tail 内。我更正了我的代码。
  • 谢谢,解决方案完美!我希望我能给你超过 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多