我有 SSAS 多维立方体,我需要查询日期范围内每一天的 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]
)
)
我想我需要使用Ancestor函数来获取月份并使用滞后到月份的粒度。
好的,让我们试试这个:
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)。
如何解决这个问题呢?
更新: 好的,我尝试查询成员标题:
MEMBER [Measures].[Test] AS
(
(Ancestor
( [Date].[Date].CurrentMember,
[Date].[Date].[Month] )
).Item(0).Member_Caption
)
而且我得到的不是月份标题,而是日期(日) - 与 [Date].[Date].CurrentMember 相同的日期。
然后我尝试了这个查询:
--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])
)
在所有查询中,结果都是“假”。那么,Month 成员不是 Date 成员的祖先???现在我真的很困惑。
我的日期维度如下所示:
更新 2:
MEMBER [Measures].[Test] AS
(
(Ancestor
( [Date].[Date].CurrentMember,
1 )
).Member_Caption
)
退货:全部