19 авг. 2010 г.

Essbase Custom-Defined Macros

Задача:
Существует куб со следующими измерениями:
Account
   Acc1
   Acc2
   Acc3
Period
   YearTotal
     Q1
       Jan
       Feb
       ...
Year
   FY09 
   FY10
   FY11

Необходимо создать функцию XXPRIOR которая умеет "перескакивать" через год т.е.

XXPRIOR(Jan->FY10) = Dec->FY09

Решение:
Создаем макрос в MaxL:
create or replace macro '@XXPRIOR' 
(SINGLE) as 
'( 
  (@ISMBR(Jan) * @@1->Dec->@CURRMBRRANGE("Years", LEV, 0, -1,-1))  
    + (@ISMBR(Feb:Dec) * @PRIOR (@@1)) 
)'

Перестартовываем приложение в Essbase.

Используем макрос в calc-сриптах:
FIX(FY10, Jan:May)
 
    Acc2 = @XXPRIOR(Acc1); /* Macro */
    Acc3 = @PRIOR(Acc1);   /* Standart Function */

ENDFIX

Этот пример показывает результат работы скрипта:
Dec     Jan     Feb     Mar    Apr    May
                FY09    FY10    FY10    FY10   FY10   FY10
                ===     ===     ===     ===    ===    ===                       
Acc1            1100    1200    1000    1300   1300   1400
Acc2            #MI     1100    1200    1000   1300   1300
Acc3            #MI     #MI     1200    1000   1300   1300

Для детального изучения смотрите Technical Reference: Custom-Defined Macros

Комментариев нет:

Отправить комментарий