我有SSAS多维立方体,我需要查询在日期范围中的每一天的3个月运行平均值。如何从每个日期的SSAS多维立方体(MDX)查询3个月的运行平均值?
例如,对于2016-04-25我必须获取数据从2016-01-01到2016-03-31。 所以我不能使用此查询(因为我不知道我有多么的日子必然落后,直到上月):
WITH MEMBER [Measures].[SalesAmount 3m average] AS
(
SUM(
([Date].[Date].CurrentMember.Lag(90) :
([Date].[Date].CurrentMember.Lag(1),
[Measures].[SalesAmount]
)
)
我想我需要使用祖先函数来获得一个月和使用滞后到月份粒度。
好吧,让我们试试这个:
WITH MEMBER [Measures].[SalesAmount 3m average] AS
(
SUM(
(Ancestor ([Date].[Date].CurrentMember, [Date].[Month])).Lag(3) :
(Ancestor ([Date].[Date].CurrentMember, [Date].[Month])).Lag(1),
[Measures].[SalesAmount]
)
)
SELECT { [Measures].[SalesAmount 3m average] } ON Columns,
{ [Date].[Date].&[2016-01-01T00:00:00] : [Date].[Date].&[2016-02-28T00:00:00]} On Rows
FROM [Cube]
不幸的是,这个查询无法正常工作(返回null)。
如何解决这个问题?
更新: 好吧,我tryed查询成员标题:
MEMBER [Measures].[Test] AS
(
(Ancestor
( [Date].[Date].CurrentMember,
[Date].[Date].[Month])
).Item(0).Member_Caption
)
而且我越来越没有一个月标题,但日期(日) - 在同一日期[日期]。 [日期] .CurrentMember。
然后我tryed这个查询:
--First try
MEMBER [Measures].[Test] AS
(
IsAncestor([Date].[Date].CurrentMember, [Date].[Month].&[2016-05-01T00:00:00])
)
--Second try
MEMBER [Measures].[Test] AS
(
IsAncestor([Date].[Date].CurrentMember, [Date].[Date].[Month].&[2016-05-01T00:00:00])
)
--Third try
MEMBER [Measures].[Test] AS
(
IsAncestor([Date].[Date].CurrentMember, [Date].[Year - Quarter - Month - Date].[Month].&[2016-05-01T00:00:00])
)
在所有查询结果是 “假”。那么,月份会员不是Date会员的祖先?现在我真的很困惑。
我的约会尺寸看起来是这样的:
更新2:
MEMBER [Measures].[Test] AS
(
(Ancestor
( [Date].[Date].CurrentMember,
1)
).Member_Caption
)
返回:所有
你的代码看起来不错 - 我会尝试复制对付AdvWrks – whytheq
好的 - 测试给了我们答案 - 我会更新我的答案 – whytheq