在我的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])
答案 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)
将该单个元素集转换为成员。