Consideraciones de sintaxis

  • Use siempre @LEVMBRS en lugar de @RELATIVE si se usa en toda la dimensión.
  • Use @CHILDREN en lugar de @RELATIVE si se aplica.
  • Use @REMOVE y @LEVMBRS si solo desea excluir algunos miembros de una sentencia FIX.

Realización de cálculos con fechas almacenadas en Planning

Planning le permite introducir valores de fecha. Por ejemplo, con el formato MM/DD/AAAA, se puede introducir una fecha de inicio como 11/01/2019 y una fecha de finalización como 06/01/2020. Oracle Essbase almacena los valores con formato de fecha como valores numéricos. Por ejemplo, la fecha de inicio precedente se almacena como 20191101 y una fecha de finalización como 201200601. Puede usar las funciones Essbase, por ejemplo, la función @ROUND, @INT o @TRUNCATE, para calcular el número de meses entre cualquier fecha de inicio y de finalización. En el siguiente ejemplo se muestra cómo calcular el número de meses entre una fecha de inicio y una de finalización con la función @ROUND:

  1. Calcule el número de meses entre el año de finalización y el año de inicio de la siguiente forma:
    (@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12
    El resultado de este cálculo (20200000 – 20190000)/10000 *12 es 12.
  2. Calcule el número de meses entre el inicio del año de finalización y la fecha de finalización y súmelo.
    (@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100
    El resultado del cálculo (20200600 – 20200000)/100 es 6.
  3. Calcule el número de meses entre el inicio del año de inicio y la fecha de inicio y réstelo.
    (@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100
    El resultado del cálculo (20191100 – 20190000)/100 es 11.
  4. Combine los pasos anteriores en una fórmula (12+6-11) para calcular el número de meses (7) entre la fecha de inicio y de finalización.
    (((@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12) + 
    ((@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100)-
    ((@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100))

Uso de la función @CURRMBR

La función @CURRMBR, que devuelve el nombre del miembro de dimensión que se calcula actualmente, es especialmente útil para establecer el ámbito y gestionar los cálculos complejos. Sin embargo, debe considerar su impacto en el rendimiento.

El rendimiento no se ve afectado al usar la función @CURRMBR en una dimensión ligera porque el bloque se corresponde solo con un miembro de dimensión ligera. Sin embargo, el rendimiento de esta función es más lento cuando se usa en una dimensión densa porque ejecuta cálculos a nivel de bloque y no a nivel de celda. Como resultado, esta función calcula todos los miembros de dimensión densas, incluso aunque no haya un miembro de dimensión densa presente en la consulta. Por tanto, use con moderación esta función con las dimensiones densas.

Además, cuando se use en dimensiones densas, la función @CURRMBR puede obtener resultados o errores inesperados si se usa junto con otras funciones como @CONCATENATE. Por ejemplo, si un miembro calculado de forma dinámica en una consulta contiene la fórmula "Actual"->@MEMBER(@CONCATENATE(@NAME (@CURRMBR ("Account")),"_Total")) y la dimensión Account es ligera, la consulta se ejecutará sin error siempre que la cuenta de la consulta genere un miembro de esquema válido. Sin embargo, si la dimensión Account es densa, la consulta genera el siguiente error incluso aunque la cuenta de la consulta genere un miembro de esquema válido.

Error executing formula for [member name] (line 0): attempt to cross a null @ member in function [@X]

Este error se produce porque la función @CURRMBR se calcula a nivel de bloque y, por tanto, calcula todas las cuentas en el bloque denso. No todas las cuentas del bloque generan un miembro de esquema válido, lo que provoca el mensaje de error anterior. Para obtener más información sobre la función @CURRMBR, consulte @CURRMBR en Oracle Essbase Technical Reference (sólo disponible en inglés).