Может кто-нибудь объяснить следующий код Essbase: FIX, @relative - PullRequest
0 голосов
/ 15 января 2019

Может кто-нибудь, пожалуйста, объясните мне приведенный ниже код 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. Возвращает следующие поля:

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

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

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

1 Ответ

0 голосов
/ 17 января 2019

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

Старайтесь не воспринимать оператор FIX как командный блок как таковой. FIX используется для выбора части ячеек в кубе. Каждый отдельный фрагмент данных в вашем кубе имеет определенный адрес, который состоит из одного элемента из каждого измерения, плюс само фактическое значение данных. Например, куб с измерениями Time, Year, Scenario и Location может иметь определенный фрагмент данных в Jan->2018->Actual->Washington. Число возможных перестановок данных в кубе может быстро стать очень большим. Например, если у вашей организации есть данные за 4 года, 12 месяцев в году, 100 местоположений, 10000 учетных записей, 3 версии и 10 отделов, вы говорите о 4 * 12 * 100 * 10000 * 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 сужает область вычисления до определенного месяца в конкретном году в конкретной версии (в отличие от всех месяцев, всех лет, всех версий) и для этого конкретного месяца / год / версия (для Sector1 или Sector2) фиксируется на всех элементах level-0 / bottom / leaf в измерениях исходного кода и канала.

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

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

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

В этой DATACOPY я хотел бы сказать Essbase, что для данного контекста FIX я хотел бы скопировать значения с конца года (значения данных, где год - FY2018, а месяц - декабрь), в начало следующего год (значения данных, где год - 2017 финансовый год, а месяц - январь). Ваша DATACOPY работает аналогичным образом, но использует центры затрат или что-то еще. Все зависит от того, как настроен куб.

...