XREF vs Partitions

Наверное на каждом проекте мы сталкиваемся с необходимостью обмениваться данными между кубами. Для этого в Essbase есть специальные инструменты: XREF, Replicated Partition, Transparent Partition.

Рассмотрим их по порядку.

XREF – cамый простой и безболезненый способ получить данные из другого куба, минусы – это низкая производительность и проблемы с созданием блоков (в 11.1.2 добавили @XWRITE). Не рекомендую использовать XREF в формулах динамических элементов (Dynamic Calc) т.к. на больших срезах это приводит к потере производительности.

Пример использования: получить значение по ограниченному срезу.

Replicated partition – если вам надо копировать блоки нижнего уровня 1:1 без всяких расчетов и транформаций, то что надо. Есть функциональность по переносу только обновленных данных.

Пример использования: передать данные по статье A по нижнему уровню из Source в Target.

Дополнительная информация – http://essbase.ru/2010/10/replicated-partitions/

Transparent partition – мощный инструмент для маштабирования. Если сравнивать с Oracle RDB – это аналог view или updateable view. Имеет ряд особенностей связанных с тем, что данные не хранятся в Target кубе, а подтягиваются налету. Пример: в Target по данным из партиции невозможно создать блоки, выгрузить данные с помощью Dataexport и т.д. Но что очень интерестно – из Target можно обновлять данные в Source!

Пример использования: разделение приложения на Факт и План с партицией по сценарию, разделение по странам, версиям и т.д.

Дополнительная информация – http://essbase.ru/2010/10/transparent-partition/

Сравнительная таблица:

* в 11.1.2 добавлена функция @XWRITE, которая позволяет записывать данные в Target

** данные изменяются только после запуска обновления партиции или вызова XREF

*** write-back функциональность

Пример MaxL создание Replicated partition и ее обновление:

create or replace replicated partition ‘RP_ACT’.’RP’

area ‘”ACT”‘ sourcearea1

to ‘RP_BUD’.’RP’

area ‘”ACT”‘ targetarea1;

refresh replicated partition RP_ACT.RP to RP_BUD.RP at ‘localhost’ all data;

refresh replicated partition RP_ACT.RP to RP_BUD.RP at ‘localhost’ updated data;

P.S. Выгрузка и загрузка данных с помощью Dataexport, Report script, MDX в данном случае не рассматривались

P.S.S. Source – это куб источник. Target – куб получатель данных.

P.S.S.S. Если производительности XREF не хватает, смотрите в сторону партиций. Если партиции не устраивают, то используйте Dataexport