у меня есть этот вычисляемый элемент, который вычисляет скользящее среднее за последние 12 месяцев:скользящего среднего из последних 24 месяцев
iif(IsEmpty(Sum({[Time].[Month].CurrentMember:NULL},
[Measures].[Count])), NULL,
Avg
(
[Time].[Month].CurrentMember.Lag(11) :
[Time].[Month].CurrentMember,
[Measures].[Count]
))
условие IIF на месте, потому что я не хочу, чтобы получить значения для будущих месяцев (без значения), который я получаю без него.
То, что я хочу сделать, это измерять только за последние 24 месяца с последнего непустого месяца.
Я пробовал с Tail и Lag, но не повезло (я бы поставил свои попытки здесь, но после многих попыток я удалил их и не знал бы, с чего начать).
Благодаря @whytheq это окончательное решение, которое я использовал:
CREATE DYNAMIC SET CURRENTCUBE.[FirstEmptyMonth]
AS { Tail
(
NonEmpty
(
[Time].[Month].MEMBERS
,[Measures].[Count]
)
,1
).Item(0).NextMember };
CREATE DYNAMIC SET CURRENTCUBE.[MonthsToIgnore]
AS {[FirstEmptyMonth].Item(0) : NULL}
+
{NULL : [FirstEmptyMonth].Item(0).Lag(25)} ;
CREATE MEMBER CURRENTCUBE.[Measures].[Moving Average]
AS IIF
(
Intersect({[Time].[Month].CurrentMember},[MonthsToIgnore]).Count = 1
,null
,Avg
(
[Time].[Month].CurrentMember.Lag(11) : [Time].[Month].CurrentMember
,[Measures].[Count]
)
);
Спасибо, но, возможно, я не очень хорошо объяснил свою проблему. Хотя это действительно скрывает будущие месяцы, моя главная проблема заключается в том, что я хочу получить только последние 24 непустых месяца. Например, если последний непустой месяц - май 2015 года, я хочу включить месяцы только в период с июня 2013 года по май 2015 года. Таким образом, в основном, скрыть как будущие месяцы, так и месяцы, которые составляют> 24 месяца назад от последнего непустого один. – user4483037
мы можем просто использовать FutureMonthsWithNoData для создания другого набора – whytheq
После адаптации последнего скрипта и добавления части Avg() теперь у меня есть именно то, что я хотел! Спасибо! – user4483037