English (Español a continuación)

I.- Definition:

  • Dynamic calc: the data is not calculated when the calculation is performed but each time the member is consulted (the value is not stored).
  • Dynamic calc and store: the data is not calculated when the calculation is performed but when the memeber is consulted for the first time. The value is stored so in next retrieval it no longer has to be calculated.

II.- Advantages and disadvantages


  • You can reduce the time of calculations and simplify them (formulas of % or variance are calculated automatically without having to include them in the calculation script).
  • Reduce disk usage.
  • You can improve the precision of the calculation (the member is calculated when the rest of the outline has been calculated and their value updated).
  • It can be verified easily and quickly without having to run the calculation script (although in some cases it may be necessary to do an aggregation first).


  • The main disadvantage is that it can increase the retrieval times.
    • If is a member of a dense dimension the time increment may not be significant (unless it contains a complex formula).
    • If is a member of a sparse dimension the time increment can be significant.
  • The increase in time will also depend on the number of dynamic members included in the retrieval.

Therefore, when using this property, a balance must be made between greater efficiency in calculations and possibly lower efficiency in retrieval.

Some considerations:

  • Very useful in members with formulas that have to be calculated after the aggregation: calculation of ratios, differences …
  • Use it on members level 0 of dense dimension with simple formulas or members of sparse dimension with complex formulas.
  • Use it in members of higher levels of dense / sparse dimensions.
  • Avoid extensive use and limit it to those members who can justify it.
  • Cannot use dynamic calculation:
    • Members level 0 without formulas.
    • Shared members.
    • Parent members in which data is loaded directly.
  • The “Two-Pass” property can only be applied to members of the dimension labeled “Accounts” or to members labeled “Dynamic calc” / “Dynamic calc and store”.
    • To reduce calculation times it is recommended to mark the “Two-Pass” members as dynamic calc (with or without storage).

III.- Dynamic Calc vs Dynamic Calc and Store

As a general rule, dynamic calc is preferable to dynamic calc and store.

a) Members of sparse dimensions:

In most cases dynamic calc is preferable, but dynamic calc and store is recommended:

  • Members with complex formulas (for example, formulas that contain financial functions).
  • Members of higher levels who are frequently consulted.

In any case, the dynamic calc (with or without storage):

  • Should be limited to members of higher levels with 6 or fewer children.
  • Do not use with members who have 20 or more descendants

b) Members of dense dimensions:

In these cases dynamic calc is preferable to dynamic calc and store.

IV.- Other considerations

Valid for members dynamic calc (with or without storage).

a) Assign the dynamic calc property

You can assign this property individually to a member of the outline:

  • By right-clicking on the member, select “Edit Member Properties” and in the “Data storage” field, select “Dynamic calc” / “Dynamic calc and store”.

It can also be assigned through a load rule file for dimension creation:

  • The “X” value is assigned in the property field (for dynamic calc) or the “V” value (for dynamic calc and store ”).

b) Retrieval time

To calculate the possible increase in the retrieval time derived from the use of the dynamic calculation, Essbase records the “retrieval factor” indicator in the log when the outline is saved:

  • “Essbase needs to retrieve [x] Essbase Kernel blocks …”

Being [x] the maximum number of blocks you need to retrieve to calculate a dynamic member when you perform an aggregation.

Those databases that have a very high “retrieval factor” (for example, greater than 2,000) may have a high retrieval time.

Another factor that will influence the retrieval time is the number of dynamic members in the outline.

  • When the outline is saved in the log, there is a record of the number of dynamic members in each dimension.

On the other hand, when a dynamic calc member is queried, Essbase writes in an area of ​​memory called “Dynamic Calculator Cache” all the blocks necessary to perform the calculation. If the size of this cache is not big enough, Essbase writes those blocks that do not fit in another area of ​​memory, which is not efficient.

  • The log shows the number of blocks calculated within the “Dynamic Calculator Cache” and the number of blocks calculated outside of this cache.
  • If this happens, it is necessary to analyze an increase of the size of this cache.

c) Order of calculation

The order used in dynamic calculation is different from the order applied in scripted calculation:

Script order:

  • Dimension labeled “Account”
  • Dimension labeled “Time”
  • Other dense dimensions
  • Other sparse dimensions
  • “Two-Pass”

Order by dynamic calculation:

  • Within a dimensión follows the order of the outline
  • Sparse dimensions
  • Dense dimensions
  • Dynamic members labeled “Two-Pass”

In some cases, this different order of calculation can produce incorrect results, specifically when calculating asymmetric data:

  • Asymmetric data are those whose result varies depending on the order in which the dimensions are calculated.

Let’s see an example: let’s consider two dimensions:

  • Dimension “Markets” (dense)
  • Dimension “Measures” (sparse)

Based on the following data:

If we first calculate the dimension “Measures” and then the dimension “Markets” (sum of its children) we obtain an incorrect result:

On the other hand, if we first add the dimension “Markets” and then calculate the dimension “Measures”, the result is correct:

If we calculate through a calculation script the result would be correct:

  • First it calculates the dense dimension (“Markets”) and then the sparse one (“Measures”).

On the other hand, if the two members “% (A) / (B)” and “Tot Markets” are dynamically calculated, the result would be incorrect:

  • First it calculates the sparse dimension (“Measures”) and then the dense one (“Markets”).

The solution in this case would be to make dynamic only the member “% (A) / (B)”.

d) Partitions

You can use the property “dynamic calc” / “dynamic calc and store” on members in partitions areas.

In transparsent partitions the definition of the member in the source base prevails over its definition in the target base:

  • For example, if in the target base the member is labeled dynamic calc but not in the source base, when the target base is queried Essbase retrieves the value the member has in the source base and does not calculate it.

In replicated partitions it is preferable to use dynamic calc than dynamic calc and store.

e) Others

e.1.- A calculation that assigns a value to a member labeled dynamic calc cannot be included in a calculation script; Essbase displays a syntax error.

For example: if “Europe” is a member labeled dynamic calc the following formula cannot be included in a calculation script:

  • “Europe” = “England” + “Germany” + “Spain”;

It can be included if the formula does not assign a value to this member. For example:

  • “Tot_Markets” = “Europe” + “America”;

The problem is that when including a member labeled dynamic calc Essbase interrupts the normal flow of calculation to perform the dynamic calculation: this interruption slows down the calculation.

e.2.- A member labeled dynamic calc cannot be the destination of a copy:

  • It cannot be the target of a DATACOPY command.

e.3.- In a member labeled dynamic calc data cannot be loaded.

e.4.- The data of a member labeled dynamic calc cannot be exported (if it is dynamic calc and store the data only can be exported if previously has been been calculated).

e.5.- Be careful if you change the property of a member from “storage” to “dynamic calc”: the information can be lost.


I.- Definición:

  • Cálculo dinámico: el dato no se calcula cuando se lanza el cálculo sino que se calcula cada vez que se consulta (no queda almacenado).
  • Cálculo dinámico con almacenamiento: el dato no se calcula cuando se lanza el cálculo sino cuando se consulta por primera vez. El dato queda almacenado por lo que si se hacen nuevas consultas ya no hay que calcularlo.

II.- Ventajas y desventajas


  • Puede reducir el tiempo de los cálculos y simplificarlos (fórmulas de % o variaciones se calculan de forma automática sin tener que incluirlas en el script de cálculo).
  • Reducir el uso del disco.
  • Puede mejorar la precisión del cálculo (se calcula cuando el resto del outline ya está calculado por lo que los demás miembros ya tienen su valor actualizado).
  • Puede ser verificado fácil y rápidamente sin tener que ejecutar el script de cálculo (si bien, en algunos casos puede ser necesario hacer primero una agregación).


  • La principal desventaja es que puede incrementar los tiempos de las consultas.
    • Si es un miembro de una dimensión densa el incremento del tiempo puede no ser significativo (salvo que contenga una fórmula compleja).
    • Si es un miembro de una dimensión dispersa el incremento del tiempo puede ser significativo.
  • El incremento del tiempo también va a depender del número de miembros dinámicos incluidos en la consulta.

Por tanto, al utilizar esta propiedad hay que hacer un balance entre una mayor eficiencia en los cálculos y una posible menor eficiencia en las consultas.

Algunas consideraciones:

  • Muy útil en miembros con fórmulas que tienen que ser calculados después de la agregación: cálculo de ratios, de diferencias…
  • Utilizarlo en miembros de nivel 0 de dimensiones densas con fórmulas simples o en miembros de dimensiones dispersas con fórmulas complejas.
  • Utilizarlo en miembros de niveles superiores de dimensiones densas / dispersas.
  • Evitar un uso extensivo y limitarlo a aquellos miembros que puedan justificarlo.
  • No se puede utilizar el cálculo dinámico:
    • Miembros de nivel 0 que no tienen fórmulas.
    • Miembros compartidos.
    • Miembros padres en los que se introducen directamente datos.
  • La propiedad “Two-Pass” tan sólo se puede aplicar a miembros de la dimensión catalogada como “Cuentas” o a miembros con “Cálculo dinámico” / “Cálculo dinámico con almacenamiento”.
    • Para reducir tiempos de cálculo es recomendable marcar los miembros “Two-Pass” como cálculo dinámico (con o sin almacenamiento).

III.- Cálculo Dinámico vs Cálculo Dinámico con Almacenamiento

Por norma general es preferible el cálculo dinámico al cálculo dinámico con almacenamiento.

a) Miembros dispersos:

En la mayoría de los casos es preferible el cálculo dinámico, pero el cálculo dinámico con almacenamiento es recomendable:

  • Miembros con fórmulas complejas (por ejemplo, fórmulas que contienen funciones financieras).
  • Miembros de niveles superiores que son frecuentemente consultados.

En todo caso, el cálculo dinámico (con o sin almacenamiento):

  • Se debe limitar a miembros de niveles superiores con 6 o menos hijos.
  • No utilizar con miembros que tienen 20 o más descendentes.

b) Miembros densos:

En estos casos el cálculo dinámico es preferible al cálculo dinámico con almacenamiento.

IV.- Otras consideraciones

Válidas para miembros con cálculo dinámico (con o sin almacenamiento).

a) Asignar la propiedad de cálculo dinámico

Se puede asignar esta propiedad de forma individual a un miembro del outline:

  • Haciendo click con el botón derecho sobre el miembro, se selecciona “Editar Propiedades de miembros” y en el campo “Almacenamiento de datos” se selecciona “Cálculo dinámico” / “Cálculo y almacenamiento dinámico”.

También se puede asignar a través de un fichero de regla de carga para creación de dimensión:

  • Se asigna el valor “X” en el campo propiedad (para el cálculo dinámico) o el valor “V” (para el cálculo y almacenamiento dinámico”).

b) Tiempo de consulta

Para calcular el posible incremento del tiempo de consulta derivado del uso del cálculo dinámico Essbase recoge en el log el indicador ”retrieval factor” cuando se guarda el outline:

  • “Essbase needs to retrieve [x] Essbase Kernel blocks…”

Siendo [x] el máximo número de bloques que necesita recuperar para calcular un miembro dinámico cuando realiza una agregación.

Aquellas bases que presentan un ”retrieval factor” muy alto (por ejemplo, superior a 2.000) puede presentar un tiempo de consulta elevado.

Otro factor que va a influir en el tiempo de consulta es el número de miembros dinámicos en el outline.

  • Cuando se graba el outline en el log queda un registro del número de miembros dinámicos en cada dimensión.

Por otra parte, cuando se consulta un miembro con cálculo dinámico Essbase escribe en un área de la memoria denominada “Dynamic Calculator Cache” todos los bloques necesarios para realizar el cálculo. Si el tamaño de esta caché no es suficiente Essbase escribe aquellos bloques que no quepan en otra área de la memoria, lo que no es eficiente.

  • En el log queda reflejado el número de bloques calculados dentro del Dynamic Calculator Cache y el número de bloques calculados fuera de esta cache.
  • Si ocurre esto hay que analizar incrementar el tamaño de esta caché.

c) Orden de cálculo

El orden utilizado en el cálculo dinámico es diferente al orden aplicado en el cálculo mediante script:

Orden mediante script:

  • Dimensión con la propiedad de “Cuenta”
  • Dimensión con la propiedad de “Tiempo”
  • Otras dimensiones densas
  • Otras dimensiones dispersas
  • “Two-Pass”

Orden mediante cálculo dinámico:

  • Dentro de una dimensión sigue el orden del outline
  • Dimensiones dispersas
  • Dimensiones densas
  • Miembros dinámicos con la etiqueta “Two-Pass”.

En algunos casos este distinto orden de cálculo puede generar resultados incorrectos, en concreto cuando se calculan datos asimétricos:

  • Datos asimétricos son aquellos cuyo resultado varía en función del orden en el que se calculen las dimensiones:

Veamos un ejemplo: Vamos a considerar dos dimensiones:

  • Dimensión “Markets”: densa
  • Dimensión “Measures”: dispersa

Partiendo de los siguientes datos:

Si primero calculamos la dimensión “Measures” y luego la dimensión “Markets” (suma de sus hijos) obtenemos un resultado incorrecto:

En cambio, si primero agregamos la dimensión “Markets” y luego calculamos la dimensión “Measures”, el resultado es correcto:

Si calculamos mediante un script de cálculo el resultado sería correcto:

  • Primero calcula la dimensión densa (“Markets”) y luego la dispersa (“Measures”).

En cambio, si los dos miembros “% (A) / (B)” y “Tot Markets” son de cálculo dinámico el resultado sería incorrecto:

  • Primero calcula la dimensión dispersa (“Measures”) y luego la densa (“Markets”).

La solución en este caso sería hacer dinámico únicamente al miembro “% (A) / (B)”.

d) Particiones

Se puede utilizar la propiedad “cálculo dinámico” / “cálculo dinámico con almacenamiento” en miembros alimentados a través de particiones.

En particiones transparsentes la definición del miembro en la base origen prevalece sobre su definición en la base destino:

  • Por ejemplo, si en la base destino está definido como miembro con cálculo dinámico pero no en la base origen, cuando se consulta la base destino Essbase recupera el valor que tiene en la base origen y no lo calcula.

En particiones replicadas es preferible utilizar el cálculo dinámico que el cálculo dinámico con almacenamiento.

e) Otras

e.1.- En un script de cálculo no se puede incluir un cálculo que asigne un valor a un miembro con cálculo dinámico; Essbase muestra un error de sintaxis.

Por ejemplo: si “Europe” es un miembro con cálculo dinámico no se puede incluir la siguiente fórmula en un script de cálculo:

  • “Europe” = “England” + “Germany” + “Spain”;

Sí se puede incluir si la fórmula no asigna un valor a este miembro. Por ejemplo:

  • “Tot_Markets” = “Europe” + “America”;

Lo que ocurre es que al incluir un miembro con cálculo dinámico, Essbase interrumpe el flujo normal del cálculo para realizar el cálculo dinámico: esta interrupción ralentiza el cálculo.

e.2.- En un mimbro con cálculo dinámico no se pueden copia datos:

  • No puede ser el destino de un comando DATACOPY.

e.3.- En un miembro con cálculo dinámico no se pueden cargar datos.

e.4.- El dato de un miembro con cálculo dinámico no se puede exportar (si es cálculo dinámico con almacenamiento sólo se exporta si previamente se ha calculado).

e.5.-  Hay que tener cuidado si se cambia la propiedad de un miembro de “almacenamiento “ a “cálculo dinámico”: se puede perder la información.