我想获得12个月平均运营的销售数据。我写了这个MDX查询:
WITH MEMBER [Measures].[12m average] AS
Avg
(
[Date].[Month].CurrentMember.Lag(11) :
[Date].[Month].CurrentMember,
[Measures].[Sales Quantity]
)
SELECT
{ [Measures].[Sales Quantity], [Measures].[12m average] } ON COLUMNS,
NON EMPTY { CROSSJOIN([Product].[Product Name].Allmembers, [Date].[Month].AllMembers) } ON ROWS
FROM [Sales]
where { [Date].[Date].&[2016-01-01T00:00:00] : [Date].[Date].&[2016-02-28T00:00:00] }
查询返回正确的销售数量聚合,但 12m平均值不正确。由于日期范围在哪里,平均值无法获得过去12个月的数据。
例如,对于2016 - 01月 12m的平均值,我们需要获得2015-01 - 2016-01数据,但日期范围从2016-01-01T00:00:00。
如何解决这个问题?
答案 0 :(得分:1)
如Tab所示,WHERE中的范围可以移动:
WITH
SET [TargetMths] AS
EXISTS(
[Date].[Month].AllMembers
,[Date].[Date].&[2016-01-01T00:00:00] : [Date].[Date].&[2016-02-28T00:00:00]
)
MEMBER [Measures].[12m average] AS
Avg(
[Date].[Month].CurrentMember.Lag(11):[Date].[Month].CurrentMember,
[Measures].[Sales Quantity]
)
SELECT
{
[Measures].[Sales Quantity]
,[Measures].[12m average]
} ON 0,
NON EMPTY
[Product].[Product Name].Allmembers
* [TargetMths] ON 1
FROM [Sales];
答案 1 :(得分:0)
从WHERE子句中取出日期范围,并使[销售数量]成为使用该日期范围的计算度量。