Как запросить 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 и сделайте [количество продаж] вычисляемым показателем, использующим этот диапазон дат.