19 июл. 2010 г.

Оптимизация скриптов Essbase

Алгоритм оптимизации прост:
  • Запускаем расчет
  • Анализируем лог
  • Находим узкое место
  • Оптимизируем :)

1. Запускаем расчет.

Самый удобный лог для анализа - это лог esscmd. С его помощью и будем запускать скрипты. Не забудьте в скипте установить параметр "SET MSG SUMMARY" т.к. без него ничего интересного в логе вы не найдете.

Создаем calc-скрипт PL_Calc.csc, который необходимо анализировать:
SET MSG SUMMARY;
...
A = A + B;
...

Создаем esscmd-скрипт PL_Calc.scr:
output 1 "PL_Calc.log";
login "ess_server" "admin" "password";

updatevariable "vEntity" "ess_server" "PL" "" "EN_Russia";
updatevariable "vYear" "ess_server" "PL" "" "FY10";

select "PL" "PL";

runcalc 2 "PL_Calc";

OUTPUT 3;
exit;

Запускаем esscmd-скрипт и получаем PL_Calc.log:
esscmd PL_Calc.scr

2. Анализируем лог.

Для анализа мне понравился RightLog. Качаем и запускаем вот с такими параметрами:
RightLog.exe -i PL_Calc.log -s ; -t -d EUR -f "1012668|1012555|1012553|1012579|1003052" > PL_Calc.csv
Получили PL_Calc.csv

3. Находим узкое место.

Открываем PL_Calc.csv в Excel делаем расчетную колонку "Время исполнения" - вот и весь поиск.

4. Типовые проблемы производительности и возможные варианты решения.
Долго работает XREF - меняйте на партиции.
Долго считается формула на sparse элементе - используйте FRMLBOTTOMUP ON;
Долго работает агрегация - необходимо настраивать порядок измерений, кэши, использовать параллельные вычисления.

По настройке оптимизации предлагаю почитать "Optimizing Calc Scripts" by Edward Roske

P.S. Если необходимо просматривать информацию о кол-ве обработаных блоков
RightLog.exe -i PL_Calc.log -s ; -t -d EUR -f "1012668|1012555|1012553|1012579|1003052|Calculations:|Block Created|1012574|1017018" > PL_Calc.csv

18 июл. 2010 г.

PREVSIBLING vs CURRMBRRANGE

Хочу поделиться наблюдением.

Передо мной стояла задача создать динамическую статью Acc01_PrevYear, которая равняется статье Acc01 за прошлый год.

Вот такая формула работает 1 сек:
Acc01_PrevYear = Acc01->@PREVSIBLING(@CURRMBR("Years"))

Вот такая формула работает 0.01 сек:
Acc01_PrevYear = Acc01->@CURRMBRRANGE("Years", Lev, 0, -1, -1)

4 июл. 2010 г.

Essbase Integration Services VS Studio

В версии 11.1.1.0 появился новый продукт Essbase Studio, который пришел на замену Essbase Integration Services (EIS)

Чего пока что не может Studio 11.1.1.3:
- нельзя добавить колонку в таблицу источник, если эта таблица уже добавлена в Studio
- проблемы с загрузкой данных, если измерение создано вручную
- проблемы с cозданием drill-through отчетов для ненулевого уровня

Что понравилось:
+ удобный интерфейс
+ удобное управление подключениями
+ добавлены новые источники данных (EPM, Oracle BI)

В версии Studio 11.1.2 кое-что поправили, но с drill-through сложность так и осталась.

Выводы: до промышленной экплуатации Studio еще далеко, но знакомится с продуктом надо обязательно т.к. возможно скоро Studio заменит и EAS Console

P.S. Вот неплохой tutorial по Studio