Как запросить 12-месячное скользящее среднее из многомерного куба SSAS (MDX) с диапазоном дат?

Я хочу получить данные о продажах за 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] }

Запрос возвращает правильное агрегирование количества продаж, но среднее значение за 12 м неверно. Среднее не может получить данные за последние 12 месяцев из-за диапазона дат.

Например, для среднего значения за 12 месяцев 2016-01 гг. Нам нужно получить данные за 2015-01 - 2016-01 гг., Но ярость дат с 2016-01-01T00: 00: 00.

Как решить эту проблему?

2 ответа

Решение

Как говорит Таб, диапазон в ГДЕ может двигаться:

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

Выньте диапазон дат из условия WHERE и сделайте [количество продаж] вычисляемым показателем, использующим этот диапазон дат.

Другие вопросы по тегам