Берегись пустых блоков

Агрегирует ли Essbase пустые блоки? Сейчас узнаем.




1. Очищаем куб Sample.Basic и смотрим количество существующих блоков:

2. Вводим число 1.

3. Меняем 1 на #Missing

4. Смотрим количество существующих блоков:

  • Existing level 0 blocks – 1
  • Existing upper-level blocks – 0

5. Запускаем скрипт агрегации:

     SET AGGMISSG ON;

     CALC ALL;

6. Смотрим количество существующих блоков:

  • Existing level 0 blocks – 1
  • Existing upper-level blocks – 8!!!


Вывод – независимо от того есть ли данные в какой-либо ячейке или нет Essbase агрегирует данные (создает блоки верхнего уровня), что приводит к увеличению времени расчета и увеличению размера БД.

Что делать – удалить пусты блоки можно командой “CLEARBLOCK Empty;”

Как еще бороться с ненужными данными:

  • Удаляйте нули (часто пользователи вместо #Missing вносят “0”)
  • Правильно удаляйте ненужные срезы командами CLEARBLOCK или CLEARDATA (не фиксируйте плотные элементы).
  • Выгружайте нулевой срез в реляционную таблицу и анализируйте данные (часто много ненужных цифр залипают на Begbalance, архивных статьях и т.д.)


P.S. Еще один пример скрипта и его краткого лога, где агрегация работает неэффективно

/* параметр логировая */
SET MSG SUMMARY;
 
/* удаляем все блоки*/
CLEARBLOCK ALL;
 
/* создаем один блок c Jan = 100*/
SET CREATENONMISSINGBLK ON;
FIX ("New York",    "100-10",    "Sales", "Actual")
    "Jan" = 100;
ENDFIX
SET CREATENONMISSINGBLK OFF;
 
/* агрегируем Feb */
SET AGGMISSG ON;
FIX ("Feb")
   CALC DIM ("Measures", "Product", "Market", "Scenario");
ENDFIX
/* удалили */
Clearing all data blocks from [(ALL)] partition
Removed [9] data blocks
 
/* создали один блок */
Calculating [ Year(Jan)] with fixed members [Sales; 100-10; New York; Actual]
Create Blocks on Equations: [Enabled]
Create Non #Missing Blocks: [Enabled]
Total Block Created: [1.0000e+000] Blocks
 
/* создали 7 блоков */ 
Calculating [ Measures, Scenario, Product, Market, with fixed members [Year(Feb)]
Aggregate #Missing values:  [Enabled]
Total Block Created: [7.0000e+000] Blocks

Я сделал запись в Jan, а агрегировал по Feb – все равно блоки создаются. Это конечно же не ошибка, а особенность работы Essbase, которую надо учитывать.