Может ли кто-нибудь объяснить следующий код Essbase: FIX, @relative

Может кто-нибудь объяснить мне приведенный ниже код Essbase, пожалуйста? Я впервые смотрю на какой-либо код Essbase и немного запутался в том, что он на самом деле делает.

FIX(&Mth, &Yr, &Version,
        "Sector1","Sector2", @relative("Source Code",0), @relative("Channel", 0) )
    FIX("AccountNo","DepNo")

    DATACOPY "1A11"->"A-500" TO "1BCD"->"C-800"; 

    ENDFIX
ENDFIX

Из того, что я гуглил, я понимаю следующее:

  1. Создает новый командный блок, который ограничивает вычисления базы данных этим подмножеством.

  2. Передает следующие члены в команду, которая будет использоваться:

    • Mth
    • Yr
    • Версия
  3. Возвращает следующие поля:

    • Sector1
    • Сектор2
    • возвращает элементы 0-го уровня элемента исходного кода, что означает, что он возвращает элементы общего исходного кода без дочерних элементов (без других измерений)
    • возвращает элементы 0-го уровня члена канала — это означает, что он возвращает элементы канала без дочерних элементов (без других измерений)
  4. Начинает новый командный блок и передает в используемую команду следующие элементы:

    • AccountNo
    • Деп№
  5. Копирует диапазон ячеек 1A11, A-500 в диапазон 1BCD, C-800

Вышеизложенное - это то, что я понимаю из документов оракула по каждой из функций, но на самом деле я не могу понять, что происходит.


person Amy    schedule 14.01.2019    source источник


Ответы (1)


Добро пожаловать в мир Essbase; поначалу это может показаться немного пугающим, особенно если вы новичок в концепции многомерности. Вы находитесь на правильном пути в отношении анализа вашего сценария calc.

Старайтесь не думать об операторе FIX как о командном блоке как таковом. FIX используется для выбора части ячеек в кубе. Каждая отдельная часть данных в вашем кубе имеет определенный адрес, который состоит из одного элемента из каждого измерения, плюс само фактическое значение данных. Например, куб с измерениями «Время», «Год», «Сценарий» и «Местоположение» может иметь определенную часть данных в позиции Jan->2018->Actual->Washington. Количество возможных перестановок данных в кубе может быстро стать очень большим. Например, если ваша организация имеет данные за 4 года, 12 месяцев в году, 100 местоположений, 10 000 учетных записей, 3 версии и 10 отделов, вы говорите о 4 * 12 * 100 * 10 000 * 3 * 10 = 1,4. миллиарды различных потенциальных адресов (ячеек) данных — и это на самом деле довольно мало для куба, поскольку они имеют тенденцию расти намного больше.

Тем не менее, операторы FIX используются для сужения объема вашей вычислительной операции, а не для работы со ВСЕМ кубом (все 1,4 миллиарда ячеек в моем гипотетическом примере), FIX по существу ограничивает вычисление ячейками, которые соответствуют определенным критериям, которые вы указываете. В этом случае первый оператор FIX ограничивает вычисление конкретным месяцем, годом, версией, секторами, источниками и каналами. Обратите внимание, что амперсанд в Mth, Yr и Version означает, что должна использоваться переменная подстановки. Это означает, что на вашем сервере или кубе установлено значение переменной подстановки, например переменная Mth = "Jan" и Yr = "FY2018", а версия может быть "Working" или "Final" или чем-то подобным. Я предполагаю, что Sector1 и Sector2, возможно, являются двумя разными членами одного и того же измерения. @RELATIVE("Source Code", 0) — это функция, которая находит элементы уровня 0 (элементы конечного/нижнего уровня в измерении, т. е. элементы, у которых нет нижестоящих элементов) указанного элемента.

Другими словами, первый оператор FIX сужает область расчета до определенного месяца в определенном году в определенной версии (в отличие от всех месяцев, всех лет, всех версий) и для этого конкретного месяца/года/версии. (для Сектора 1 или Сектора 2) он фиксируется на всех элементах уровня 0/нижних/конечных элементов в измерениях исходного кода и канала.

Следующий оператор FIX еще больше сужает текущую область ячеек для расчета в дополнение к внешнему FIX. Нередко можно увидеть операторы FIX, вложенные таким образом.

Наконец, мы подошли к той части, где что-то действительно происходит: КОПИРОВАНИЕ ДАННЫХ. В данном контексте FIX эта команда DATACOPY говорит, что для КАЖДОЙ ячейки в текущем FIX копируются значения из источника в место назначения. DATACOPY немного проще, когда это просто DATACOPY "Source" TO "Target", в отличие от использования межпространственного оператора (->)... но это, возможно, легче понять с точки зрения измерений времени/года. Например, представьте, что копия данных была написана так:

DATACOPY "FY2018"->"Dec" TO "FY2019"->"Jan";

В этой КОПИИ ДАННЫХ я бы сообщил Essbase, что для заданного контекста FIX я хотел бы скопировать значения с конца года (значения данных, где год — 2018 ФГ, а месяц — декабрь) до начала следующего года (данные значения, где год — FY2019, а месяц — январь). Ваш DATACOPY работает аналогичным образом, но использует центры затрат или что-то еще. Все зависит только от того, как настроен куб.

person jwj    schedule 17.01.2019
comment
Большое спасибо. Это действительно помогло и объяснило все намного лучше, чем любая из онлайн-статей, которые я читал, очень ценю ваш ответ! - person Amy; 18.01.2019