BOTTOM-UP VS TOP-DOWN

English (Español a continuación)

Essbase uses two calculation modes: “bottom-up” and “top-down”.

By default, Essbase applies bottom-up mode, which is faster than top-down.

However, when Essbase finds a complex formula (for example, cross-referenced formulas: A = B-> D + C-> D) for that specific member it applies the “top-down” mode (in the log it leaves a message). This method slows down the calculation.

In bottom-up mode Essbase begins by determining from the existing blocks which need to be calculated and only calculates the blocks that are affected. The calculation starts with the members of the lowest level and works up until all the necessary blocks are calculated.

On the contrary, the “top-down” mode calculates all the potential blocks that can affect that particular member (whether they exist or not). This method is less efficient because it calculates more blocks but in some cases it ensures that the result is correct.

Let’s see an example: we have two members “Cost” and “Price” of the sparse dimension “Variable”; we are going to calculate “Price” with the following formula:

  • Price = Cost * 1,2;

The starting situation is:

Applying the “bottom-up” mode gives the following result:

  • For “Product A” it does not calculate since there is no block.
  • For “Product B” the result is also #missing (since it multiplies #missing * 1,2).
  • For “Product C” it ​​does calculate.

Applying the “top-down” mode the result is:

  • For “Product A” and “Product C” it ​​does calculate (it calculates all potential blocks even if they do not exist).
  • For “Product B” the result is #missing.

In any case, if we are interested in the calculation speed, we can force Essbase to use the “bottom-up” mode in situations in which it would apply the “top-down” mode by default:

  • @CALCMODE command: it is registered in the server’s configuration file (specifying if it is applied at the server, application or database level).
  • With the SET FRMLBOTTOMUP (ON / OFF) command in a calculation script.

Español

Essbase utiliza dos modos de cálculos: “bottom-up” y “top-down”.

Por defecto, Essbase aplica el modo “bottom-up”, que es más rápido que el “top-down”.

No obstante, cuando Essbase encuentra una fórmula compleja (por ejemplos, fórmulas con referencias cruzadas: A = B->D + C->D)  para ese miembro concreto aplica el modo “top-down” (en el log deja un mensaje). Este método ralentiza el cálculo.

En el modo “bottom-up” Essbase comienza por determinar de los bloques existentes cuales necesitan ser calculados y únicamente calcula los bloques que se ven afectados. El cálculo comienza por los miembros del nivel inferior y va subiendo hasta que todos los bloques necesarios son calculados.

Por el contrario, el modo “top-down” calcula todos los bloques potenciales que pueden afectar a ese miembro concreto (existan o no). Este método es menos eficiente por que calcula más bloques pero en algunos casos asegura que el resultado es correcto.

Veamos un ejemplo: Partimos de la siguiente situación: tenemos dos miembros “Cost” y “Price” de la dimensión dispersa “Variable”; vamos a calcular “Price” con la siguiente fórmula:

  • Price = Cost * 1,2;

La situación de partida es:

Aplicando el modo “bottom-up” da el siguiente resultado:

  • Para “Product A” no calcula ya que no existe bloque.
  • Para “Product B” el resultado también es #missing (ya que multiplica #missing * 1,2).
  • Para “Product C” sí calcula.

Aplicando el modo “top-down” el resultado es:

  • Para “Product A” y “Product C” sí calcula (calcula todos los bloques potenciales aunque no existan).
  • Para “Product B” el resultado es #missing.

En todo caso, si nos interesa la velocidad de cálculo podemos forzar a Essbase a utilizar el modo “bottom-up” en situaciones en las que por defecto aplicaría el modo “top-down”:

  • Comando @CALCMODE: se inscribe en el fichero de configuración del servidor (especificando si se aplica a nivel de servidor, aplicación o base de datos).
  • Con el comando SET FRMLBOTTOMUP (ON / OFF) en un script de cálculo.