Essbase: BLOCK и Cell mode.Особенности расчета в операторе IF.

Объеденные в блоки ячейки одновременно рассчитываются в каждой группе. Расчет происходит достаточно быстро   в  режиме  BLOCK, но нужно быть осторожным, чтобы избежать взаимного влияния  данных на результат расчета.

Это очень хорошо иллюстрирует расчет с использованием выражения IF.

При расчете в режиме @CALCMODE(BLOCK) – первым вычисляется выражение, которое попадает под уловие «ИСТИНА», т.е.  если встретится вот такое выражение IF(@ISMBR(Feb)), то  не смотря на порядок элементов в Outline, первым будет рассчитан элемент Feb, а потом все остальные периоды.

При расчете в режиме @CALCMODE(CELL) – условия проверяются и выполняются согласно порядку элементов в Outline.

Это очень важно, если в расчетах есть взаимосвязанные формулы, например

Исходное значение

Jan Feb Mar
Budget Sales 10 20 30

“Budget Sales”(
@CALCMODE(BLOCK);
IF (@ISMBR(Feb))
“Budget Sales” = 100;
ELSE
“Budget Sales” = Feb + 10;
ENDIF
)

Результат

Jan Feb Mar
Budget Sales 110 100 110

“Budget Sales”(
@CALCMODE(Cell);
IF (@ISMBR(Feb))
“Budget Sales” = 100;
ELSE
“Budget Sales” = Feb + 10;
ENDIF
)

Результат

Jan Feb Mar
Budget Sales 10 100 110

В режим расчета CELL Essbase автоматически самостоятельно переходит, если встречает одну из функций