MDX查询产生#Error作为输出

时间:2014-07-29 22:46:47

标签: ssas mdx moving-average

在我的SSAS Cube中,我有一个名为[Sales Total]的度量。我想要做的是创造另一个措施,让我在过去6个月内的销售额最低。我希望这是一个移动最小值,计算为从当月到6个月的每个时段的销售最低点。

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

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

感谢任何形式的帮助。

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])

1 个答案:

答案 0 :(得分:2)

正如许多年前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)将该单个元素集转换为成员。