CALCULATION / CALCULO

English (Español a continuación)

ASO cubes are mainly recommended for databases with many dimensions in which we basically need data aggregation following the structure of the outline.

  • The calculation flexibility of ASO cubes is much more limited than that of BSO cubes.
  • It is not recommended to use ASO cubes if the database requires complex calculations.

Also, there are significant differences in calculation between ASO databases and BSO databases:

  • When an ASO database is loaded, only the data of the cells level 0 without formulas (input cells) are loaded; but it is not necessary to launch an aggregation calculation to calculate the upper levels; this occurs dynamically when a query is performed.
  • ASO database consolidation operators have certain limitations:
    • Members of stored hierarchies support only: add and omit.
    • Members of dynamic hierarchies support all operators: addition, subtraction, multiplication, division, %, and omit.
  • ASO cubes do not support calculation scripts (they can be run in Maxl, Essbase API, or Calculation Manager in Planning).
  • They do not support functions or macros.
  • They do not support two passes calculation.
  • For the members formulas MDX language is used.
    • These formulas can only be included in members of dynamic hierarchies.
    • The efficiency of ASO cubes deteriorates significantly when using dynamic hierarchies or using formulas on members.

1.- Calculation order

The calculation order of the ASO and BSO cubes differ. In the ASO databases, the calculation order is as follows:

1.- Upper members of stored dimensions and attributes:

  • This aggregation is done by adding levels 0 to levels 1, then levels 1 to levels 2, and so on until reaching the upper levels of the outline.
  • Since the consolidation operator can only be addition or omission, the order in which members of the same level are added does not affect the result.

2.- Members of dynamic hierarchies and formulas.

Because the members of these hierarchies can get different consolidation operators, the calculation order does affect the result.

The order in which they are calculated depends on the “Resolution Order” property, which can be customized for each member.

  • The resolution order is applied when performing a query.
  • The resolution order can affect the result: when a formula depends on other member’s value, this other member has to be calculated before so that the calculation of the formula is correct.
  • Those members that do not have dependencies on each other can have the same resolution order.

Let’s see an example: suppose an outline with dynamic dimensions «Months» and «Data».

  • Months
    • Year
      • January
      • February
      • March
  • Data
    • Sales
    • Var %

The «Year» data is calculated by adding up the months and the «Var %» data as year-on-year variation.

The calculation of “Var %” of the “Year” member is different depending on the calculation order of the “Months” and “Data” dimensions:

  • If the «Data» dimension is calculated first and then the «Months» dimension, the value is incorrect (value with orange filling: it is the sum of the monthly values).
  • Instead, if the «Months» dimension is calculated first and then the «Data» dimension, the value is correct (the value with a blue filling is the year-on-year variation of the values ​​of the «Year» member corresponding to 2021 and 2022).

It is recommended to set the resolution order for all members of the dynamic dimensions:

  • It can be set both at the member level and at the dimension level.
  • A resolution order can be assigned between 0 (default value) and 127.
  • Formulas on members that are assigned a resolution order are resolved in increasing order.

The resolution order is as follows:

  • The resolution order applied at the member level has priority.
    • Members WITH formulas that do not have a resolution order assigned take resolution order 0.
  • Then, the resolution order of the dimension. This order applies to:
    • Members WITHOUT formulas that do not have a resolution order assigned take the resolution order of their dimension.
  • If multiple members have the same resolution order, the member is calculated in the reverse order of the one it occupies in the outline.
    • Members listed below are calculated before those listed above.

How is the resolution order assigned?

  • For a member: right-click on the member and select “Edit member properties”: in the window that opens, you can indicate the order of resolution.
  • For a dimension: right-click on the dimension and select “Edit member properties”: in the window that opens, you can indicate the resolution order of the dimension.
  • It is recommended to assign the resolution order using, for example, multiples of 5: 5, 10, 15, 20…
    • If later on a member had to be inserted, one of the values of the intervals could be used (for example, 7) without having to modify the order of all subsequent ones.

It is important to check the results obtained to see if the calculation order established is correct.

Español

Los cubos ASO están recomendados principalmente para bases con muchas dimensiones en los que se busca básicamente la agregación de los datos siguiendo la estructura del outline.

  • La capacidad de cálculo de los cubos ASO es mucho más limitada que la de los cubos BSO.
  • No se recomiendan utilizar cubos ASO si la base requiere de cálculos complejos.

Además, hay diferencias significativas en el cálculo entre bases ASO y bases BSO:

  • Cuando se carga una base ASO tan sólo se cargan los datos de las celdas de nivel 0 sin fórmulas (celdas inputs); pero no hace falta lanzar un cálculo de agregación para calcular los niveles superiores; esta se produce de forma dinámica cuando se realiza una consulta.
  • Los operadores de consolidación de las bases ASO presentan ciertas limitaciones:
    • Los miembros de las jerarquías almacenadas admiten únicamente: suma y omitir.
    • Los miembros de las jerarquías dinámicas admiten todos los operadores: suma, resta, multiplicación, división, % y omitir.
  • Los cubos ASO no admiten calculation scripts (sí se pueden ejecutar en Maxl, Essbase API o Calculation Manager en Planning).
  • No admiten funciones ni macros.
  • No admiten el cálculo en dos pasadas.
  • Para las fórmulas de los miembros de los cubos ASO se utiliza el lenguaje MDX.
    • Estas fórmulas tan sólo se pueden incluir en miembros de jerarquías dinámicas.
    • La eficiencia de los cubos ASO se deteriora significativamente cuando se utilizan jerarquías dinámicas o se utilizan fórmulas en miembros.

1.- Orden de cálculo

El orden de cálculo de los cubos ASO y BSO difieren. En las bases ASO el orden de cálculo es el siguiente:

1.- Miembros agregados de dimensiones de almacenamiento y atributos:

  • Esta agregación se realiza agregando los niveles 0 en los niveles 1, a continuación los niveles 1 en los niveles 2, y así sucesivamente hasta llegar a los niveles superiores del outline.
  • Como el operador de consolidación tan sólo puede ser suma u omitir, el orden en el que se van agregando los miembros de un mismo nivel no afecta al resultado.

2.- Miembros de jerarquías dinámicas y fórmulas.

Como los miembros de estas jerarquías pueden llevar diferentes operadores de consolidación, el orden de cálculo sí afecta al resultado.

El orden en el que se calculan depende de la propiedad “Orden de resolución”, que se puede personalizar para cada miembro.

  • El orden de resolución se aplica al realizar una consulta.
  • El orden de resolución puede afectar al resultado: cuando una fórmula depende del valor de otro miembro, este otro miembro se tiene que calcular antes para que el cálculo de la fórmula sea correcto.
  • Aquellos miembros que no tienen dependencias entre sí pueden tener el mismo orden de resolución.

Veamos un ejemplo: supongamos un outline con las dimensiones “Meses” y “Datos” dinámicas.

  • Meses
    • Año
      • Enero
      • Febrero
      • Marzo
  • Datos
    • Ventas
    • Var %

El dato “Año” se calcula por sumatorio de los meses y el dato “Var %” como variación interanual.

El cálculo de “Var %” del miembro “Año” es diferente según el orden de cálculo de las dimensiones “Meses” y “Datos”:

  • Si primero se calcula la dimensión “Datos” y luego la dimensión “Meses” el valor es incorrecto (valor con fondo naranja: es la suma de los valores mensuales).
  • En cambio, si primero se calcula la dimensión “Meses” y luego la dimensión “Datos” el valor es correcto (el valor con fondo azul es la variación interanual de los valores del miembro “Año” correspondientes a 2021 y 2022).

Es recomendable fijar el orden de resolución para todos los miembros de las dimensiones dinámicas:

  • Se puede establecer tanto a nivel miembro como a nivel dimensión.
  • Se puede asignar un orden de resolución entre 0 (valor por defecto) y 127.
  • Las fórmulas en miembros que tienen asignados un orden de resolución se resuelven en orden creciente.

El orden de resolución es el siguiente:

  • Tiene prioridad el orden de resolución aplicado a nivel miembro.
    • Miembros CON fórmulas que no tengan asignados un orden de resolución toman el orden de resolución 0.
  • Luego, el orden de resolución de la dimensión. Este orden se aplica a:
    • Miembros SIN fórmulas que no tengan asignados un orden de resolución toman el orden de resolución de su dimensión.
  • Si múltiples miembros tienen el mismo orden de resolución, el miembro se calcula en orden inverso al que ocupa en el outline.
    • Los miembros que aparecen más abajo se calculan antes que los que aparecen más arriba.

¿Cómo se asigna el orden de resolución?

  • Para un miembro: se hace click con el botón derecho sobre el miembro y se selecciona “Editar propiedades de miembros”: en la ventana que se abre se puede indicar el orden de resolución.
  • Para una dimensión: se hace click con el botón derecho sobre la dimensión y se selecciona “Editar propiedades de miembros”: en la ventana que se abre se puede indicar el orden de resolución de la dimensión.
  • Es recomendable asignar el orden de resolución utilizando, por ejemplo, múltiplos de 5: 5, 10, 15, 20…
    • De esta manera, si en algún momento posterior hubiera que intercalar un miembro se podría utilizar uno de los valores de los intervalos (por ejemplo, 7) sin tener que modificar el orden de todos los posteriores.

Es importante realizar un check de los resultados obtenidos para ver si el orden de cálculo establecido es el correcto.