Cálculo ascendente y descendente
En un cubo de almacenamiento de bloques de Essbase, los cálculos descendentes son menos eficientes que los cálculos ascendentes, ya que se calculan más bloques de los necesarios. Los cálculos descendentes pueden ser necesarios en algunos casos para garantizar que los resultados del cálculo sean correctos.
Essbase realiza un cálculo completo de un esquema de base de datos mediante el cálculo ascendente o descendente. De forma predeterminada, Essbase utiliza el cálculo ascendente en cubos de almacenamiento de bloques que no son modo híbrido.
Note:
Si el cubo utiliza el modo híbrido, que es el predeterminado en Essbase 21c, puede omitir la información de este tema. Los cubos del modo híbrido ya están optimizados para el análisis de dependencia dinámica. Para obtener más información, consulte Adopte el modo híbrido para el procesamiento analítico rápido.Para un cálculo ascendente, Essbase determina qué bloques de datos se deben calcular antes de calcular el cubo. A continuación, Essbase calcula solo los bloques que se deben calcular. El cálculo comienza con el bloque existente con el número de bloque más bajo y funciona a través de cada bloque en orden numérico hasta que se alcanza el bloque existente con el número de bloque más alto. Consulte Orden de cálculo de bloque.
Si el esquema contiene una fórmula de miembro complejo, Essbase realiza un cálculo descendente para el miembro relevante.
Cálculos ascendentes y fórmulas simples
En el caso de fórmulas simples, Essbase realiza un cálculo ascendente para determinar qué bloques se deben calcular antes de ejecutar el cálculo completo. Por ejemplo, para una fórmula simple en un miembro (como A = B + C), A se calcula solo si B o C existe en la base de datos. Es decir, la dependencia de la fórmula en B y C se conoce antes de iniciar el cálculo.
Cálculos descendentes y fórmulas complejas
Antes de iniciar un cálculo, Essbase busca en el esquema y marca fórmulas complejas que requieren un cálculo descendente; por ejemplo, una fórmula de miembro que contiene una referencia multidimensional. Cuando Essbase alcanza un miembro con una fórmula de arriba hacia abajo, realiza un cálculo de arriba hacia abajo para el miembro.
Cuando una fórmula de un miembro es compleja, se deben examinar todos los bloques posibles para el miembro para ver si se debe cambiar un bloque existente o crear un nuevo bloque; es difícil determinar la dependencia que los bloques tienen en otros bloques antes del inicio del cálculo. El método descendente ralentiza el rendimiento del cálculo porque Essbase debe buscar los bloques adecuados para calcular y ejecutar la fórmula.
Cuando se compila una fórmula, si la fórmula se va a calcular de arriba abajo, Essbase registra un mensaje en el archivo de registro de la aplicación.
Considere la siguiente fórmula compleja:
A = B -> D + C -> DPara calcular la fórmula, Essbase debe examinar cada combinación de A para ver si existe B -> D o C -> D.
Forzar un cálculo ascendente
Si es adecuado para el sitio, puede forzar un cálculo ascendente en una fórmula descendente.
Para forzar un cálculo ascendente, utilice uno de los siguientes métodos:
-
Función de cálculo: @CALCMODE en una fórmula
-
Comando de script de cálculo: SET FRMLBOTTOMUP
-
Valores de Configuración:
Forzar un cálculo ascendente en una fórmula generalmente aumenta el tiempo de rendimiento. Si la fórmula contiene funciones complejas (por ejemplo, funciones de rango) o si las dependencias de la fórmula no son sencillas, un cálculo ascendente puede producir resultados diferentes de los de un cálculo descendente.
Atención:
Antes de cambiar la configuración de CALCOPTFRMLBOTTOMUP o utilizar el comando de script de cálculo SET FRMLBOTTOMUP en un entorno de producción, compruebe la validez de los resultados del cálculo comparando, en relación con los mismos datos, los resultados de un cálculo ascendente y los resultados de un cálculo descendente.