Trabajar con el script de cálculo de Essbase

El script de cálculo de Essbase es el lenguaje para escribir su propia lógica de negocio personalizada en Financial Consolidation and Close. Esta sección proporciona algunas construcciones básicas de Essbase, además de restricciones que se aplican a Financial Consolidation and Close. Para obtener más información sobre el script de cálculo de Essbase, consulte Introducción a Essbase Cloud for Administrators.

Sintaxis común

  • Punto y coma
    • Es necesario introducirlo al final de cada sentencia
    • Ejemplo: Sales = Sales * 1.50;
    • No es necesario introducirlo después de FIX ni ENDFIX
  • Comillas dobles
    • Nombres de miembro con espacios/caracteres especiales/que empiezan por un número
    • Se recomienda utilizar comillas dobles para introducir nombres de miembro
    • Ejemplo: "Cash Ratio" = "Cash"/"Current Liabilities";
  • Operador de varias dimensiones
    • Utilice -> para especificar intersecciones de más de una dimensión
    • Ejemplo: "Sales"->"Changes In Net Income"->"Product1";

Comentarios

Los comentarios empiezan por /* y terminan con */.

Se admiten comentarios de una o varias líneas.

Puede utilizar el icono de la barra de herramientas para establecer o eliminar bloques de comentarios.

FIX/ENDFIX

FIX/ENDFIX es uno de los bloques de construcción básicos de cualquier script de cálculo. Para realizar un cálculo, debe definir una sección FIX/ENDFIX en la que se incluirán los cálculos de negocio reales.

Ejemplo: supongamos que "Productos" es su dimensión personalizada y desea calcular el número de televisores vendidos. Puede utilizar la siguiente sintaxis:

FIX("Televisores")

"Unidades_vendidas" = "TV_LED" + "TV_UHD";

ENDFIX

El cálculo empresarial real sería:

"Unidades_vendidas" = "TV_LED" + "TV_UHD";, que calcula el número de televisores vendidos.

Nota:

Debe introducir un punto y coma al final de cada sentencia de cálculo, pero no para FIX ni ENDFIX.

La sección FIX/ENDFIX abarca miembros de varias dimensiones que participan en los cálculos de la sección. En este ejemplo, solo se realizan cálculos con "televisores".

También puede definir FIX anidados, como los siguientes:

Ejemplo 1 de anidación de Essbase

El cálculo anterior también se podría escribir como se muestra a continuación:

Ejemplo 2 de anidación de Essbase

En el ejemplo, @List es una función de Essbase. Essbase incluye multitud de funciones. Pero Financial Consolidation and Close no soporta todas las funciones de Essbase. Consulte la sección "Lista de funciones de Essbase" para identificar las funciones admitidas.

FIX en dimensiones de Financial Consolidation and Close

Una aplicación de Financial Consolidation and Close puede contener 13 dimensiones, en función de las funciones que estén activadas en la aplicación. De las13 dimensiones posibles, no puede aplicar FIX a las siguientes, porque el sistema les aplica FIX automáticamente cuando un usuario invoca el proceso de consolidación.

  • Escenario

  • Año

  • Periodo

  • Vista

  • Entidad

Por ejemplo, supongamos que tiene la siguiente sentencia:

Ejemplo 3 de corrección de Essbase

El despliegue en el sistema fallará, y se registrará un mensaje de error con la información indicada en la consola de trabajos.

No obstante, esto no significa que no pueda utilizar las dimensiones en el script. Normalmente, la sintaxis de los cálculos será similar a la siguiente:

Ejemplo 4 de corrección de Essbase

Tenga en cuenta que en FIX y en la parte izquierda (valor "Left Hand side") no puede utilizar ningún miembro de las dimensiones Escenario, Año, Período, Entidad y Vista. Esta restricción no se aplica al lado derecho de la ecuación (valor "Right hand side").

Se aceptaría la siguiente sintaxis:

Ejemplo 5 de corrección de Essbase

En el caso de las ocho dimensiones restantes, si no aplica FIX en una dimensión en concreto, el sistema tendrá en cuenta todos los miembros de la dimensión. Por ejemplo, supongamos que tiene la siguiente sentencia:

Ejemplo 6 de corrección de Essbase

En este ejemplo, FIX se utiliza en todas las dimensiones, excepto en Cuenta. En este caso, Essbase tendrá en cuenta todos los miembros de la dimensión Cuenta para los cálculos de FIX/ENDFIX.

Miembros de Financial Consolidation and Close restringidos

Determinados miembros del sistema de cada incidencia de Financial Consolidation and Close no se pueden utilizar ni calcular en el script de cálculo. Si se utilizan los miembros restringidos en el cálculo, la validación o el despliegue del sistema fallarán y se cargará un mensaje de error en la consola de trabajos.

Tenga en cuenta que, si no se especifica ningún miembro para la dimensión, el sistema considerará TODOS los miembros de la dimensión. Aun así, dado que no se pueden incluir miembros restringidos como parte del proceso, deberá excluirlos explícitamente en las sentencias de la dimensión FIX de la izquierda de la expresión.

La siguiente tabla es una lista completa de los miembros restringidos de Financial Consolidation and Close de las dimensiones. Tenga en cuenta que, en el caso de las dimensiones Moneda y Consolidación, la restricción se basa en la regla de inserción utilizada. Además, cada regla de inserción definida incluye información en la sección Comentario sobre el miembro de la dimensión Moneda o Consolidación que se puede incluir para dicha regla.

Tabla 20-5 Miembros de dimensión restringidos

Dimensión Miembro Expresión: Lado izquierdo Expresión: Lado derecho
Escenario Todos los miembros No
Año Todos los miembros No
Periodo Todos los miembros No
Vista Todos los miembros No
Entidad Todos los miembros No
Cuenta FCCS_CSTATUS No
  FILTRO FCCS_CSTATUS No
  Tipos de cambio: Final No
  Tipos de cambio: Promedio No
  Tipo de cambio medio No
  Tipo de cambio final No
  SrcAverageRate No
  TgtAverageRate No
  SrcEndingRate No
  TgtEndingRate No
  FCCS_Balance No
  FCCS_CTA No
  FCCS_CICTA No
  FCCS_Porcentaje de control No
  FCCS_Ratio actual No
  FCCS_Ratio rápido No
  FCCS_Ratio de efectivo No
  FCCS_Rotación de inventario No
  FCCS_Rotación de activos No
  FCCS_Período medio de cobro No
  FCCS_Ventas de días del inventario No
  FCCS_Margen de ganancia bruta No
  FCCS_Rendimiento de ventas No
  FCCS_Rendimiento de patrimonio No
  FCCS_Relación de deuda/patrimonio No
  FCCS_Relación de deuda No
Origen de datos FCCS_Tipos de sistema No
  FCCS_Reemplazo de tipo No
  FCCS_Reemplazo de cuenta No
  FCCS_PCON No
  FCCS_Origen de parámetro No
Movimiento FCCS_Balance de apertura No
  FCCS_BalanceApertura_Efectivo No
  FCCS_Cambio_Total_NoEfectivo No
  FCCS_BalanceCierreEfectivo No

FIX en todos los miembros de una dimensión excepto los miembros restringidos

Suele ocurrir que es necesario aplicar FIX en todos los miembros de nivel 0 de una dimensión y que dicha dimensión contenga miembros restringidos. En este ejemplo se muestra cómo optimizar la aplicación de FIX en todos los miembros de nivel 0 excepto los miembros restringidos de la dimensión.

Por ejemplo, la dimensión Cuenta contiene el mayor número de miembros restringidos.

A continuación se muestra el fragmento de código del script de cálculo que se puede utilizar para aplicar FIX en todos los miembros de nivel 0 de Cuenta excepto en los miembros restringidos:

@REMOVE( @LEVMBRS( "Account", 0 ), @LIST( @RELATIVE( "FCCS_System Account", 0 ),@RELATIVE( "FCCS_Drivers", 0 ),@RELATIVE( "FCCS_Ratios", 0 ),@RELATIVE( "Exchange Rates", 0 ) ) )

FIX en las dimensiones Ligera y Densa

FIX es más eficaz cuando se aplica en dimensiones ligeras. En este caso, FIX hará que Essbase solo extraiga bloques para la combinación de miembros de la dimensión Ligera que se hayan definido en FIX y omita el resto.

Las combinaciones ligeras funcionan como índices para que Essbase busque los bloques de datos que coincidan con los índices y los extraiga para cálculos. Por lo tanto, no se extraen todos los bloques para que el sistema funcione.

Si se utiliza FIX en una dimensión Densa, los miembros de la dimensión aparecerán en cada bloque de datos en Essbase. Por lo tanto, si no se utiliza correctamente, afectará al rendimiento. Tenga en cuenta que al aplicar FIX en la dimensión Densa, Essbase extraerá todos los bloques de datos sin límite de número de bloques, y solo se limitará a una parte de cada bloque. Es decir, puede que sea necesario realizar varias transferencias a la base de datos para acceder a la información.

Por ejemplo, podría hacer referencia a "Sales" y "PostSales" desde la dimensión Cuenta con las siguientes sentencias:

Ejemplo 7 de corrección de Essbase

Cuando el sistema procesa FIX por primera vez en "Ventas", Essbase extrae todos los bloques de datos de la dimensión Cuenta, pero solo trabaja en la cuenta "Ventas".

Más adelante, en la sentencia FIX en "PostSales", Essbase vuelve a extraer de nuevo todos los bloques de datos de la dimensión Cuenta, pero solo trabaja en la cuenta "PostSales". En este caso, se realizan dos transferencias a la base de datos para estas dos cuentas.

Para evitar problemas de rendimiento, puede evitar el uso de FIX en la dimensión Cuenta y utilizar IF...THEN en una dimensión Densa.

Ejemplo 8 de corrección de Essbase

En este ejemplo, en el que no utiliza la sentencia FIX, solo tendrá que hacer una transferencia a la base de datos de Essbase.

Se recomienda utilizar FIX en dimensiones Ligeras e IF..THEN en dimensiones Densas para mejorar el cálculo del rendimiento.

Bloque de miembros

Los bloques de miembros también se denominan bloques de cálculos. En algunas ocasiones, verá que se utiliza el término "anclaje" para hacer referencia a bloques de miembros. La sintaxis de un bloque de miembros es la siguiente:

Ejemplo 1 de bloque de miembros de Essbase

A continuación se muestra un ejemplo de sentencias de bloque de miembros:

Ejemplo 2 de bloque de miembros de Essbase

En el ejemplo, "My Total Opening Balance" sería el anclaje o miembro de bloque de cálculos. Siempre que sea posible, el miembro debe pertenecer a una dimensión Densa.

En el cálculo anterior, nos limitamos al miembro "My FX Opening" y los cálculos se realizan en el miembro especificado en la sentencia FIX.

Tenga en cuenta que, si utiliza sentencias IF, necesitará un bloque de miembros. No puede escribir sentencias IF fuera de bloques de miembros.