Cálculos personalizados en cubos de almacenamiento agregado
Los cálculos personalizados amplían las capacidades analíticas de Essbase al permitir la ejecución de cálculos recurrentes en cubos de almacenamiento agregado (ASO). Puede realizar el cálculo de determinadas áreas de cubo, proporcionando información de cargo, abono y contrapartida para la contabilidad.
Puede escribir cálculos personalizados para cubos de almacenamiento agregado que actualicen las celdas de nivel 0 de destino. Los scripts de cálculo personalizados se expresan en MDX.
Mediante cálculos personalizados, puede realizar matemáticas básicas en los saldos de cuenta de un libro mayor y escribir los resultados en miembros de nivel 0 objetivo de un cubo de almacenamiento agregado de Essbase. Puede realizar cálculos en saldos a cuenta o en importes fijos y se puede programar para que se repita cada período contable.
Los cálculos personalizados pueden ser útiles cuando el cubo se utiliza para la generación de informes de contabilidad general, donde la contabilidad de doble entrada está vigente. Los ítems de débito, como los activos y los gastos, deben cuadrar con los ítems de crédito, como el capital y los ingresos.
Utilice el siguiente flujo de trabajo para crear y ejecutar cálculos personalizados:
-
Crear un script de cálculo expresado en MDX.
-
Seleccione un área del cubo en la que se ejecutará el cálculo. El área se proporciona en tiempo de ejecución mediante los parámetros de destino y PDV (punto de vista).
-
Si utiliza el proceso de cargos y abonos, seleccione los miembros de cargo y abono del esquema para escribir los valores positivos y negativos. Estos parámetros se proporcionan en el momento de la ejecución.
-
Si utiliza entradas de compensación, seleccione el área en la que se deben realizar las entradas de compensación. Este parámetro se proporciona en el momento de la ejecución mediante una tupla MDX. Si no se especifica una desviación o está vacía, no se realiza el cálculo de desviación.
Note:
En la contabilidad general, una entrada de compensación es una medida de contrabalance en el lado opuesto de la contabilidad; por ejemplo, un crédito de $100 en enero puede tener una compensación de $100 agregada al lado de débito de la contabilidad, por lo que la contabilidad se puede cuadrar como preparación para un próximo gasto de ese importe.
-
Ejecute el script de cálculo personalizado.
Lista de criterios de cálculos personalizados
Al diseñar cálculos personalizados para cubos de almacenamiento agregado (ASO) de Essbase, la critera que se debe considerar incluye: PDV (región de contexto), el script de cálculo MDX, el destino (donde se escriben los resultados), la región de origen (a la que se hace referencia mediante fórmulas), un valor de desplazamiento opcional y miembros de débito y crédito opcionales.
La funcionalidad de cálculo personalizada depende de una variedad de criterios especificados. Revise estos términos antes de continuar.
Tabla 38-1 Descripción de los criterios de cálculos personalizados
| Criterios | Descripción |
|---|---|
|
PDV |
Región simétrica de la base de datos que describe el contexto en el que se realizan los cálculos personalizados. Los miembros de atributo no se pueden utilizar para este argumento. |
|
Script de cálculo |
Script de cálculo expresado en MDX. Los miembros de atributo no se pueden utilizar en la parte izquierda de la ecuación. |
|
Objetivo |
Argumento de tupla expresado en MDX que define la región del cubo en la que se escriben los resultados del cálculo. Este argumento se combina con el lado izquierdo de cada fórmula y el desplazamiento para determinar dónde se escriben los resultados y los valores de desplazamiento. Los miembros de atributo no se pueden utilizar para este argumento. |
|
(Opcional) Desfase |
Ubicación de la base de datos en la que se escribe un valor de compensación para cada importe de origen. Los miembros de atributo no se pueden utilizar para este argumento. |
|
(Opcional) Miembros de abono y débito |
En la contabilidad de doble entrada, asientos contables de balance para una transacción. Ambas son expresiones de miembros MDX. El miembro de débito indica un miembro en el que se escriben los valores de resultado positivo y el miembro de crédito indica un miembro en el que se escriben los valores de resultado negativo. Los miembros de atributo no se pueden utilizar para este argumento. |
|
Región de origen |
Expresión de juego de MDX que especifica la región del cubo a la que hacen referencia las fórmulas del script. |
Escribir y ejecutar cálculos personalizados de ASO
Escriba y ejecute cálculos personalizados para cubos de almacenamiento agregado de Essbase para realizar actualizaciones en las celdas de nivel de destino 0. Los scripts de cálculo personalizados se expresan en MDX. Para ejecutar las secuencias de comandos, utilice el cálculo de ejecución MaxL.
Escritura de Cálculos Personalizados
Un script de cálculo personalizado es un archivo que se crea y almacena con una extensión .csc. Cree el script de cálculo personalizado con uno o una serie de pares de expresión de tupla en MDX, terminados por punto y coma. La sintaxis:
tuple := numeric_value_expression;tuple es una especificación MDX de uno o más miembros, en la cual dos miembros no pueden ser de la misma dimensión. La tupla debe estar en el lado izquierdo de la ecuación y es el factor principal para determinar dónde se escriben los resultados del cálculo personalizado.
Solo se permiten nombres de miembro en la expresión de tupla. El uso de funciones MDX no está soportado para scripts de cálculo personalizados.
Note:
El factor secundario que determina el destino para los resultados es el parámetro target y el tercer factor es el parámetro POV. Especifique el segundo y tercer parámetros en el momento de la ejecución del cálculo, en lugar de como parte del script de cálculo.
La expresión_valor_numérico es una expresión del valor numérico MDX sencilla, como un número o una operación aritmética. La expresión debe aparecer en la parte derecha de la ecuación. Solo se permiten operadores aritméticos. Se devuelve un error si se utilizan operadores que no son aritméticos (como Y, O o SI).
Los nombres de miembros se pueden utilizar en la expresión de valor numérico, pero el uso de funciones de miembros no está soportado para scripts de cálculo personalizados.
Los miembros de atributo no se pueden utilizar en la parte izquierda de la ecuación en un script de cálculo personalizado.
También debe definir la región de origen, que sirve como indicación de rendimiento para Essbase. Essbase recupera previamente los datos especificados en la región de origen y los utiliza para realizar el cálculo especificado en el script.
Ejecución de Cálculos Personalizados
Puede ejecutar cálculos personalizados mediante la sentencia Ejecutar cálculo (almacenamiento agregado) de MaxL.
También puede ejecutar scripts de cálculo personalizados mediante la API llamando al método de API de Java IEsPerformCustomCalc.performCustomCalc o a la función de API C EssPerformCustomCalcASO.
También puede utilizar Oracle Hyperion Calculation Manager para diseñar un cálculo personalizado y desplegarlo para su ejecución en Enterprise Scheduling Services.
Caso de uso de ejemplo para cálculos personalizados
Este caso de uso de ejemplo para un cálculo personalizado en un cubo de almacenamiento agregado (ASO) de Essbase utiliza un miembro de crédito, un miembro de débito y una compensación para realizar asignaciones de gastos de alquiler de negocio.
Considere un esquema con las siguientes dimensiones:
-
Empresa, que contiene CompanyA, CompanyB y otros secundarios.
-
Departamento, que contiene departamentos numerados, como 101, 102, 103.
-
Cuenta, en la que la cuenta 5740 es una cuenta de gastos de alquiler y SQFT es una cuenta estadística que se utiliza para registrar el área cuadrada de cada departamento.
-
Escenario, en el que el miembro Real es donde se contabilizan los datos, y el miembro Asignación es donde se almacenan las asignaciones y los cálculos personalizados. El miembro Scenario es un padre que agrega los miembros secundarios Actual y Allocation.
-
Año, dimensión de tiempo organizada por meses y trimestres.
-
Geografía, una dimensión organizada por estados y ciudades.
-
TipoImporte, en el que Débito es el destino y Crédito es la compensación.
-
Proyecto, una dimensión que contiene proyectos como Proj1, Proj2.
El PDV es una expresión de conjunto MDX que indica dónde se debe ejecutar el cálculo personalizado. Se especifica de la siguiente manera:
CrossJoin( { ( [Company], [101], [Jan], [Scenario] ) },
Descendants( Geography, Geography.Levels(0)) )
DebitMember es una expresión de miembro MDX que indica un miembro de débito en el que se deben escribir los valores de resultados positivos. Se especifica como [BeginningBalance_Debit].
CreditMember es una expresión de miembro MDX que indica un miembro de crédito al que se deben escribir los valores de resultado negativos y de compensación. Se especifica como [BeginningBalance_Credit].
Note:
La contrapartida se registra en el miembro de débito en caso de que la suma de todos los valores de resultado sea negativa.
El desplazamiento es una expresión de tupla MDX que indica dónde se deben realizar las entradas de desplazamiento. Se especifica como ([Account_NA], [Project_NA]).
La expresión de desplazamiento se combina con el destino y el PDV para determinar la ubicación en la que se realizan las entradas de desplazamiento. Si las dimensiones se superponen, el orden para resolver la ubicación de desplazamiento es el desplazamiento, el destino y el PDV, en ese orden.
El destino es una expresión de tupla MDX que indica dónde escribir los resultados del cálculo personalizado. Se especifica como (Allocation).
La expresión de destino se combina con el PDV y el lado izquierdo de cada línea en el script de cálculo personalizado, para determinar la ubicación en la que se escriben los resultados. Si las dimensiones se superponen, el orden para resolver la ubicación de destino es el lado izquierdo de las ecuaciones, el destino y el PDV, en ese orden. En este ejemplo, los resultados se escriben en el miembro Allocation, porque el destino sustituye al miembro Scenario especificado en el PDV.
A continuación se muestra un ejemplo de un script de cálculo personalizado:
(AccountA,Proj1) := 100;
([AccountB], [Proj1]) := ([AccountB], [Proj1]) * 1.1;
(AccountC,Proj1) :=
((AccountB,Proj1,2007) + (AccountB, Proj1)) / 2;
(AccountA,Proj2) :=
((AccountD,Proj1) +
(AccountB,Proj2)) / 2;Para cada combinación del PDV,
-
El script de cálculo se ejecuta en el contexto de la combinación de PDV actual.
-
Se escribe un valor de desplazamiento en la ubicación de destino.
Note:
Cada fórmula (línea en el script de cálculo) se ejecuta simultáneamente, en lugar de secuencialmente. Por lo tanto, no se puede utilizar el resultado de una fórmula en una fórmula posterior.
Para definir la región de origen, examine el script de cálculo personalizado y determine a qué miembros se hace referencia en el lado derecho de las ecuaciones. Como mínimo, la región de origen debe incluir todos los miembros de la parte derecha de las sentencias de asignación en el script de cálculo personalizado.
Defina la región de origen como un único conjunto MDX. Si los miembros de la parte derecha de las ecuaciones son de más de una dimensión, puede utilizar CrossJoin para crear el juego a partir de dos juegos. CrossJoin solo acepta dos juegos, por lo que puede que tenga que utilizar CrossJoins anidadas.
La región de origen para el script de cálculo personalizado anterior es:
Crossjoin(
{[AccountB], [AccountD]},
Crossjoin(
{[Proj1], [Proj2]}, {[2007]}
)
)
No es necesario incluir ningún miembro en la región de origen que no esté asignado en el script. Por ejemplo, si ha agregado a la región de origen un [AccountC], que no se utiliza en el script, se ignoraría y podría causar un ligero perjuicio al rendimiento.
No es necesario contabilizar los números en la región de origen. Por ejemplo, la siguiente asignación en un script de cálculo personalizado no requiere que se agregue nada a la región de origen: ([Bud Var]):=10.
Optimice los cálculos personalizados con NONEMPTYTUPLE
Con la propiedad NONEMPTYTUPLE, puede optimizar un script de cálculo personalizado de almacenamiento agregado (ASO) de Essbase para conservar los recursos de memoria omitiendo las tuplas vacías al calcular conjuntos de datos grandes y dispersos.
Debido a que los grandes juegos de datos pueden ser muy dispersos, el uso de la propiedad NONEMPTYTUPLE en scripts de cálculo personalizados puede optimizar el script para conservar los recursos de memoria.
Se crea un script de cálculo personalizado con uno o una serie de pares de expresión de tupla en MDX, terminados por punto y coma. De manera opcional, puede filtrar los juegos de resultados vacíos para que no se calculen, mediante la inclusión de la cláusula de propiedad NONEMPTYTUPLE en el script de cálculo personalizado.
El uso de la cláusula de propiedad NONEMPTYTUPLE en un script de cálculo personalizado indica a Essbase que el valor de celda que se está calculando para una tupla está vacío siempre que el valor nonempty_member_list proporcionado esté vacío.
Sintaxis
use_optimized_way;
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;Dónde
-
use_optimized_way: palabra clave literal necesaria para activar el uso de la propiedad NONEMPTYTUPLE en el script de cálculo. Si se omite, se ignoran las directivas NONEMPTYTUPLE.
-
tuple: especificación MDX de uno o más miembros, en la cual dos miembros no pueden ser de la misma dimensión.
-
NONEMPTYTUPLE: propiedad opcional que Se puede utilizar para optimizar el rendimiento de cálculo. Si se utiliza, se debe seguir esta propiedad literal con nonempty_member_list.
-
nonempty_member_list: uno o más nombres de miembros de diferentes dimensiones separados por comas.
-
numeric_value_expression: Expresión de valor numérico MDX sencilla, como un número o una operación aritmética. La expresión debe aparecer en la parte derecha de la ecuación. Solo se permiten operadores aritméticos. Se devuelve un error si se utilizan operadores que no son aritméticos (como Y, O o SI).
Ejemplos
Los siguientes ejemplos de scripts de cálculo personalizados incluyen una cláusula de propiedad NONEMPTYTUPLE para evitar que las tuplas vacías se incluyan en la transferencia de cálculo.
use_optimized_way;
([Balance].[Net Balance].[Net Change].[Allocation Out]):= NONEMPTYTUPLE ([Balance].[Remainder],[Rule]) -(([Balance].[Remainder],[Rule])*(20.24000/100));([2014], [August], [Actual]):= NONEMPTYTUPLE ([2014], [January], [Actual]) ([2014], [January], [Actual]);Más información