23 нояб. 2010 г.

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

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

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