Cálculo en dos pasadas

El cálculo de dos pasadas puede ser aplicable para fórmulas de miembro que se deben calcular dos veces para producir el valor correcto. Puede etiquetar un miembro de dimensión de cuentas como de dos pasadas para mejorar el rendimiento de algunas aplicaciones de Essbase de almacenamiento de bloques.

Note:

No utilice el cálculo en dos pasadas en cubos del modo híbrido. Use solo solve order (Orden de resolución).

Para algunas aplicaciones, puede mejorar el rendimiento etiquetando un miembro de la dimensión de cuentas como de dos pasadas en el esquema. Sin embargo, la combinación de datos y necesidades de cálculo puede requerir el uso de un script de cálculo para calcular una fórmula dos veces, en lugar de un etiquetado de dos pasos, para preservar la precisión.

Siempre que sea posible, Essbase calcula fórmulas de dos transferencias en el nivel de bloque, simultáneamente con el cálculo principal. En algunas situaciones, sin embargo, se necesita un pase de cálculo adicional.

La forma en que Essbase debe calcular las fórmulas de dos pasadas depende de la configuración de dispersión densa de las dimensiones de tiempo y cuentas.

Ejemplo de Cálculo de Dos Pasadas

Considere este cálculo necesario para el porcentaje de ganancia:

Profit % = Profit % Sales

Supongamos que en la siguiente tabla se muestra un subjuego de un bloque de datos con Medidas y Año como dimensiones densas. Las medidas se etiquetan como cuentas y Year como tiempo. La configuración de AGGMISSG está desactivada (valor predeterminado).

Los valores de datos se han cargado en las celdas de entrada. Essbase calcula las celdas en las que aparecen los números del 1 al 7, en ese orden. Por ejemplo, % de ganancia -> Ene se calcula primero; % de ganancia -> Trimestre 1 tiene varias rutas de consolidación.

Tabla 34-5 Ejemplo de Cálculo de Dos Pasos: Orden de Cálculo y Datos

Medidas -> Año Ene Feb Mar Trim1

Beneficio

75

50

120

5

Ventas

150

200

240

6

% beneficio

1

2

3

4, 7

Note:

Para obtener información sobre cómo el orden de cálculo de celdas depende de la configuración del cubo, consulte Orden de cálculo de celdas.

Essbase utiliza este orden de cálculo:

  1. Essbase calcula la fórmula Profit % Sales para % de ganancias -> Ene, % de ganancias -> Feb, % de ganancias -> Mar y % de ganancias -> Trimestre 1 (1, 2, 3, 4).

  2. Essbase calcula Profit -> Qtr1 y Sales -> Qtr1 agregando los valores para Jan, Feb y Mar (5, 6 anteriores).

  3. Essbase calcula el % de ganancia -> Trimestre 1 agregando los valores de % de ganancia -> Ene, % de ganancia -> Feb y % de ganancia -> Mar (7 anteriores). Esta adición de porcentajes produce el valor 125%, que no es el resultado correcto.

    Tabla 34-6 Ejemplo de cálculo de dos pasadas: resultados incorrectos

    Medidas/Año Ene Feb Mar Trim1
    Beneficio 75 50 120 245 (5)
    Sales 150 200 240 590 (6)

    % beneficio

    50% (1)

    25% (2)

    50% (3)

    0% (4)

    125% (7)

  4. Si etiqueta Profit% como dos pasos en el esquema, Essbase utiliza la fórmula Profit % Sales para volver a calcular los valores de Profit% y producir los resultados correctos.

    Tabla 34-7 Ejemplo de cálculo de dos pasadas: resultados correctos

    Medidas/Año Ene Feb Mar Trim1
    Beneficio 75 50 120 245 (5)
    Sales 150 200 240 590 (6)

    % beneficio

    50% (1)

    25% (2)

    50% (3)

    0% (4)

    125% (7)

    42% (8)

Para obtener información sobre varios pases de cálculo, consulte Pasos de cálculo.

Interacción de dos pasos y cálculo inteligente

Si utiliza Cálculo inteligente y dos cálculos de paso en una aplicación de almacenamiento de bloques, utilice el escenario que coincida con la configuración del cubo para asegurarse de que Essbase calcula con precisión las fórmulas de dos pasos.

Note:

No utilice el cálculo en dos pasadas en cubos del modo híbrido. Use solo solve order (Orden de resolución).

Escenario A: Etiqueta de dos pasadas

En este escenario, las fórmulas se colocan en el esquema y, según corresponda, se etiquetan como fórmulas específicas de dos pasos para un mejor rendimiento.

Sin aprobación de cálculo adicional para fórmulas de dos pasadas

Debido a que Essbase calcula las fórmulas de dos transferencias mientras calcula el bloque de datos, Essbase no necesita realizar una transferencia de cálculo adicional.

Todos los bloques de datos marcados como limpios

Después del cálculo, todos los bloques de datos se marcan como limpios para el cálculo inteligente.

Al etiquetar una fórmula de miembro como de dos transferencias en el esquema, Essbase realiza el cálculo de dos transferencias mientras se calcula cada bloque de datos. Sin embargo, al repetir una fórmula en un script de cálculo, Essbase debe leer los bloques de datos y escribirlos en la memoria para volver a calcular la fórmula.

Escenario B: Script de cálculo

En este escenario, se crea un script de cálculo para realizar el cálculo de fórmula para un mejor rendimiento.

Aprobado de cálculo adicional para fórmulas de dos pasos

Essbase calcula el cubo y, a continuación, realiza una transferencia de cálculo adicional para calcular las fórmulas de dos transferencias. Aunque todos los bloques de datos se marcan como limpios después del primer cálculo, Essbase ignora el estado de limpieza en los bloques que son relevantes para la fórmula de dos pasadas y vuelve a calcular estos bloques.

Bloques de datos para fórmulas de dos pasos no marcados como limpios

Tras el primer cálculo, Essbase ha marcado todos los bloques de datos como limpios. En una segunda transferencia de cálculo, Essbase vuelve a calcular los bloques de datos necesarios para las fórmulas de dos transferencias. Sin embargo, dado que el segundo cálculo es un cálculo parcial, Essbase no marca los bloques recalculados como limpios. Cuando se vuelve a calcular con la opción Cálculo inteligente activada, estos bloques de datos se pueden volver a calcular innecesariamente.

Si la configuración del cubo permite que Essbase utilice el escenario B, considere el uso de un script de cálculo para realizar cálculos de fórmula de dos transferencias. Si utiliza un script de cálculo, Essbase sigue realizando un cálculo adicional a través de la base de datos; sin embargo, puede asegurarse de que Essbase haya marcado todos los bloques de datos como limpios después del cálculo. Consulte Scripts de cálculo para el cálculo inteligente y de dos pasos.

Selección de Etiqueta de Cálculo de Dos Pasos o Método de Script de Cálculo

Aunque etiquetar un miembro de cuentas como de dos pasadas puede traer beneficios de rendimiento, algunas aplicaciones no pueden utilizar este método. Compruebe estas calificaciones para ver si debe aplicar una etiqueta de dos pasos o crear un script de cálculo que realice un cálculo dos veces para obtener el mejor rendimiento y precisión:

  • Puede etiquetar un miembro como de dos transferencias si se encuentra en una dimensión etiquetada como cuentas. Al realizar un cálculo predeterminado en la base de datos, Essbase vuelve a calcular automáticamente las fórmulas etiquetadas como de dos transferencias si están en la dimensión etiquetada como cuentas.

  • Puede etiquetar un miembro como de dos transferencias si es un miembro de Cálculo dinámico de cualquier dimensión.

  • Puede que tenga que utilizar un script de cálculo para calcular una fórmula de dos pasadas para obtener resultados precisos, incluso si la etiqueta de dos pasadas proporcionaría beneficios de rendimiento. Consulte Scripts de cálculo para el cálculo inteligente y de dos pasos.

  • Debe utilizar un script de cálculo para calcular una fórmula dos veces si la configuración de la base de datos significa que Essbase utiliza el escenario A y si la fórmula hace referencia a valores de otro bloque de datos.

  • Puede que desee utilizar un script de cálculo para calcular fórmulas de dos transferencias si la configuración de la base de datos significa que Essbase utiliza el escenario B.

Dos pasos en cálculos predeterminados

Hay disponible un valor de cubo para activar las dos transferencias para los cálculos por defecto. Al realizar un cálculo predeterminado en un cubo con la opción de dos transferencias activada, Essbase intenta calcular automáticamente las fórmulas etiquetadas como dos transferencias en la dimensión etiquetada como cuentas.

Note:

No utilice el cálculo en dos pasadas en cubos del modo híbrido. Use solo solve order (Orden de resolución).

Consulte los siguientes temas:

Para realizar un cálculo por defecto, puede utilizar la sentencia MaxL de cálculo de ejecución.

Para activar el cálculo de dos transferencias, puede utilizar la sentencia MaxL de alter database.

Scripts de cálculo para cálculo inteligente y de dos pasos

Al diseñar scripts de cálculo de Essbase para realizar cálculos de dos transferencias con Intelligent Calculation, aprenda a utilizar SET UPDATECALC, SET CLEARUPDATESTATUS y CALC TWOPASS para optimizar los cálculos.

Note:

No utilice el cálculo en dos pasadas en cubos del modo híbrido. Use solo solve order (Orden de resolución).

Si el esquema utiliza fórmulas de dos pasos, siga estas directrices para que el cálculo sea lo más preciso y rápido posible:

  • Antes de que un comando vuelva a calcular una fórmula de dos pasadas, agregue el comando SET UPDATECALC OFF para desactivar Intelligent Calculation. Si tiene Cálculo inteligente activado (valor predeterminado), Essbase calcula solo los bloques de datos que no están marcados como limpios, pero cuando realiza un cálculo predeterminado con Cálculo inteligente activado, todos los bloques de datos se marcan como limpios, por lo que Essbase no realiza el recálculo de la fórmula de dos pasos.

  • Essbase no vuelve a calcular automáticamente las fórmulas de dos transferencias en los scripts de cálculo, por lo que debe utilizar el comando CALC TWOPASS.

  • Si ha cambiado el cálculo por defecto de CALC ALL y la opción Cálculo inteligente está activada, los bloques de datos no se pueden marcar como limpios después del primer cálculo. Consulte Cálculo inteligente para cubos de almacenamiento de bloques.

Para obtener las ventajas de rendimiento del cálculo inteligente al realizar el primer cálculo completo de la base de datos, utilice uno de los métodos que se muestran en la siguiente serie de ejemplos. El mejor método depende de las necesidades de cálculo y de la estructura del esquema del cubo.

En los ejemplos siguientes, asuma que el esquema tiene una dimensión etiquetada como cuentas y que es una dimensión densa. Desea calcular las ventas de cada producto como un porcentaje de las ventas de todos los productos. Supongamos que esta fórmula debe calcular la dimensión:

Sales % Sales -> Product

Cuando Essbase calcula el bloque de datos para cada producto, aún no ha calculado el valor Ventas -> Producto, por lo que los resultados de las ventas de cada producto como porcentaje del total de ventas son incorrectos.

Cálculo inteligente con un índice grande

Si el índice de cubo es grande y desea utilizar Cálculo inteligente, puede utilizar cualquiera de las siguientes opciones para obtener el mejor rendimiento.

Opción de script de cálculo

Utilice este modelo para crear un script de cálculo que realice un cálculo completo con la opción Cálculo inteligente activada:

SET UPDATECALC ON;

CALC ALL;
SET UPDATECALC OFF;
SET CLEARUPDATESTATUS AFTER;
"Share of Sales" = Sales % Sales -> Product;

Script de cálculo y opción de dos pasadas

Para etiquetar un miembro como de dos transferencias y utilizar un script de cálculo para calcular primero el cubo completo, a continuación, el miembro de dos transferencias:

  1. Coloque una fórmula en el esquema y etiquetándola como de dos pasos.

  2. Coloque la fórmula en el miembro adecuado de la dimensión etiquetada como cuentas (en nuestro ejemplo, Porcentaje de ventas).

  3. Cree un script de cálculo que realice un cálculo completo y, a continuación, un cálculo de dos pasos:

    SET UPDATECALC ON;
    CALC ALL;
    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    CALC TWOPASS;

Opción de script de cálculo y cliente

Para realizar un cálculo predeterminado desde un cliente y, a continuación, utilizar un script de cálculo para realizar el cálculo de fórmula:

  1. Active Cálculo inteligente si este valor predeterminado se ha cambiado.

  2. Realice un cálculo completo.

  3. Use una secuencia de comandos de cálculo similar a este ejemplo para desactivar el cálculo inteligente y calcular la fórmula:

    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    "Share of Sales" = Sales % Sales -> Product;

    o bien,

    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    CALC TWOPASS;

Todas las opciones de ejemplo anteriores realizan estas tareas:

  1. Active el cálculo inteligente.

  2. Calcule el cubo completo y marque los bloques de datos como limpios.

  3. Desactive el cálculo inteligente.

  4. Marque los bloques recalculados como limpios, aunque este cálculo sea un cálculo parcial del cubo. Si no utiliza el comando SET CLEARUPDATESTATUS DESPUÉS, Essbase marca los bloques de datos como limpios solo después de un cálculo completo.

  5. Essbase recorre el cubo, calcula solo la fórmula para el miembro relevante (Compartir ventas en nuestro ejemplo) o calcula todas las fórmulas etiquetadas como de dos pasos en el esquema.

Ejemplo: Cálculo inteligente con un índice pequeño

Para utilizar el cálculo inteligente cuando el índice de cubo es pequeño:

  1. Cree un script de cálculo para calcular el cubo, pero indique a Essbase que no marque los bloques de datos calculados como limpios.

  2. Marque todos los bloques de datos como limpios y no vuelva a calcular los bloques de datos.

    SET CLEARUPDATESTATUS OFF;
    CALC ALL;
    CALC TWOPASS;
    SET CLEARUPDATESTATUS ONLY;
    CALC ALL;
    1. SET CLEARUPDATESTATUS OFF indica a Essbase que no marque los bloques de datos calculados como limpios.

    2. La primera CALC ALL hace que Essbase pase por el cubo calculando todos los bloques de datos sucios. Essbase no marca los bloques calculados como limpios.

      Essbase no vuelve a calcular automáticamente las fórmulas etiquetadas como de dos transferencias.

    3. CALC TWOPASS hace que Essbase recorra el cubo y vuelva a calcular las fórmulas de dos transferencias en la dimensión de cuentas. Essbase vuelve a calcular las fórmulas porque los bloques de datos necesarios no fueron marcados como limpios por el CALC ALL anterior. Essbase no marca los bloques de datos recalculados como limpios.

    4. SET CLEARUPDATESTATUS ONLY indica a Essbase que marque los bloques de datos como limpios, pero no que calcule los bloques de datos (este comando desactiva el cálculo).

    5. La última CALC ALL hace que Essbase pase por el cubo y marque todos los bloques de datos como limpios. Essbase no calcula los bloques de datos.

Ejemplo: Cálculo inteligente desactivado para una fórmula de dos pasadas

Para desactivar el cálculo inteligente para una fórmula de dos pasadas, cree un script de cálculo que realice las siguientes tareas:

  • Desactiva el cálculo inteligente.

  • Realiza un cálculo completo.

  • Repite la siguiente fórmula de dos pasos:

    SET UPDATECALC OFF;
    CALC ALL;
    "Share of Sales" = Sales % Sales -> Product;