Добро пожаловать в мир 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 работает аналогичным образом, но использует центры затрат или что-то еще. Все зависит от того, как настроен куб.