Fórmulas en scripts de cálculo
Cuando se definen fórmulas de Essbase en scripts de cálculo, tienen prioridad sobre cualquier fórmula aplicada a los miembros del esquema de cubo. El uso de fórmulas de esta forma proporciona a los cálculos por lotes flexibilidad adicional más allá de las relaciones codificadas en el esquema del cubo.
Puede escribir fórmulas para calcular mediante ecuaciones básicas, ecuaciones condicionales y fórmulas interdependientes.
En un script de cálculo de Essbase, puede realizar ambas operaciones:
-
Calcular una fórmula de miembro existente en el esquema de cubo
-
Definir una nueva fórmula que dure la duración de la ejecución del script de cálculo
Para calcular una fórmula existente que se aplica a un miembro del esquema, utilice el nombre del miembro seguido de un punto y coma (;). Por ejemplo, el siguiente comando en un script de cálculo calcula la fórmula que se aplica al miembro Variance en el esquema:
Variance;Para sustituir los valores resultantes del cálculo del esquema, puede aplicar manualmente una fórmula en el script de cálculo. Por ejemplo, la siguiente fórmula en un script de cálculo recorre el cubo, agrega los valores en los miembros Nómina, Marketing y Varios y coloca el resultado en el miembro Gastos. Esta fórmula sustituye cualquier fórmula colocada en el miembro Expenses del esquema:
Expenses = Payroll + Marketing + Misc;Note:
No puede aplicar fórmulas a miembros compartidos ni etiquetar solo miembros.
Consulte también Desarrollo de fórmulas para cubos de almacenamiento de bloques.
Ecuaciones básicas en scripts de cálculo de Essbase
En los scripts de cálculo de Essbase, se utilizan ecuaciones para asignar valores a los miembros del esquema del cubo. La asignación dura la duración de la ejecución del script de cálculo.
La sintaxis de una ecuación en un script de cálculo de Essbase es la siguiente:
member = mathematical_expression;member es un nombre de miembro del esquema y mathematical_expression es cualquier expresión matemática válida.
Essbase evalúa la expresión y asigna el valor al miembro especificado.
En el siguiente ejemplo, Essbase recorre la base de datos, resta los valores de COGS de los valores de Ventas y coloca el resultado en Margen:
Margin = Sales - COGS;En este ejemplo, Essbase recorta la base de datos, resta los valores de Costo de los valores de Retail, calcula los valores resultantes como un porcentaje de los valores de Retail y coloca los resultados en Marcado:
Markup = (Retail - Cost) % Retail;También puede utilizar los operadores lógicos > (mayor que) y < (menor que) en las ecuaciones.
En el siguiente ejemplo, si las ventas de febrero son mayores que las ventas de enero, el indicador de aumento de ventas da como resultado un valor de 1; si es falso, el resultado es un valor de 0:
Sales Increase Flag = Sales -> Feb > Sales -> Jan;Ecuaciones condicionales en scripts de cálculo de Essbase
Puede utilizar ecuaciones condicionales en fórmulas de script de cálculo de Essbase para definir la lógica if/else y controlar el flujo de eventos durante el cálculo.
Cuando utiliza una sentencia IF como parte de una fórmula de miembro en un script de cálculo, debe:
-
Asociar la sentencia IF a un único miembro
-
Incluir la sentencia IF entre paréntesis
En el siguiente ejemplo, toda la sentencia IF…ENDIF está entre paréntesis y asociada al miembro Profit, Profit (IF(...)...):
Profit
(IF (Sales > 100)
Profit = (Sales - COGS) * 2;
ELSE
Profit = (Sales - COGS) * 1.5;
ENDIF;)Essbase recorre la base de datos y realiza los siguientes cálculos:
-
La sentencia IF comprueba si el valor de Ventas para la combinación de miembros actual es mayor que 100.
-
Si Sales es mayor que 100, Essbase resta el valor de COGS del valor de Sales, multiplica la diferencia por 2 y coloca el resultado en Profit.
-
Si Sales es menor o igual que 100, Essbase resta el valor de COGS del valor de Sales, multiplica la diferencia por 1,5 y coloca el resultado en Profit.
Para obtener más información sobre los comandos condicionales y el control del flujo de secuencias de comandos de cálculo, consulte Calculation Command Groups.
Fórmulas interdependientes en scripts de cálculo de Essbase
Al igual que con las fórmulas del esquema, una fórmula de un script de cálculo calcula las relaciones matemáticas entre los miembros en el esquema de cubo de Essbase.
Un buen ejemplo de una fórmula interdependiente en Essbase es una evaluación de flujo de caja, en la que el inventario de apertura depende del inventario de cierre del mes anterior.
Cuando utilice una fórmula interdependiente en un script de cálculo, tenga en cuenta que se aplican las mismas reglas que para la sentencia IF. Deberá:
-
Asociar la fórmula a un solo miembro
-
Incluir la fórmula entre paréntesis
En el siguiente ejemplo, toda la fórmula interdependiente se incluye entre paréntesis y se asocia al miembro Opening Inventory:
"Opening Inventory"
(IF(NOT @ISMBR (Jan))
"Opening Inventory" = @PRIOR("Ending Inventory");
ENDIF;)
"Ending Inventory" = "Opening Inventory" - Sales + Additions;Fórmulas de script de cálculo y estado de cálculo inteligente
Las fórmulas de los miembros de dimensión dispersa que contienen funciones financieras o de relación siempre provocan un recálculo, incluso si Intelligent Calculation de Essbase marca los bloques como limpios.
Supongamos que tiene una fórmula en un miembro de dimensión ligera y que la fórmula contiene uno de los siguientes tipos de función:
-
Relación (por ejemplo, @PRIOR o @NEXT)
-
Financiero (por ejemplo, @NPV o @INTEREST)
Essbase siempre vuelve a calcular el bloque de datos que contiene la fórmula, incluso si el bloque está marcado como limpio para los fines del Cálculo inteligente.
Consulte Cálculo inteligente de bloques de datos y Cálculo inteligente para cubos de almacenamiento de bloques.
Agrupar fórmulas y dimensiones en el script
Puede lograr mejoras significativas en el rendimiento del cálculo agrupando cuidadosamente las fórmulas y dimensiones de los miembros de Essbase en un script de cálculo.
Calcular una serie de fórmulas de miembro
Cuando calcule fórmulas, asegúrese de utilizar los paréntesis correctamente.
En el siguiente ejemplo, los paréntesis colocados incorrectamente hacen que Essbase realice dos transferencias de cálculo a través del cubo: una vez que se calculan las fórmulas en los miembros Qtr1 y Qtr2; y una vez que se calcula la fórmula en Qtr3:
(Qtr1;
Qtr2;)
Qtr3;En cambio, las siguientes configuraciones hacen que Essbase recorra el cubo solo una vez, calculando las fórmulas de los miembros Qtr1, Qtr2 y Qtr3:
Qtr1;
Qtr2;
Qtr3;o bien,
(Qtr1;
Qtr2;
Qtr3;)Del mismo modo, las siguientes fórmulas hacen que Essbase recorra el cubo una vez, calculando ambas fórmulas en una sola pasada:
Profit = (Sales - COGS) * 1.5;
Market = East + West;Calcular una serie de dimensiones
Al calcular una serie de dimensiones, puede optimizar el rendimiento agrupando las dimensiones siempre que sea posible.
Por ejemplo, la siguiente fórmula hace que Essbase pase por el cubo solo una vez:
CALC DIM(Year, Measures);Por el contrario, la siguiente sintaxis hace que Essbase recorra el cubo dos veces, una vez para cada comando CALC DIM:
CALC DIM(Year);
CALC DIM(Measures);