Calcular un subjuego de datos en el cubo

Para evitar calcular más de lo necesario, calcule un subconjunto de datos en la base de datos de Essbase. Puede indicar subjuegos mediante cualquier combinación de funciones de juego de miembros, sentencias FIX para especificar inclusiones y sentencias EXCLUDE para especificar exclusiones.

Para calcular un subjuego de datos en el cubo, utilice uno de los siguientes métodos:

  • Cree una fórmula mediante las funciones de juego de miembros para calcular las listas de miembros.

  • Utilice los comandos FIX...ENDFIX para calcular un rango de valores por inclusión.

  • Utilice los comandos EXCLUDE...ENDEXCLUDE para calcular un rango de valores por exclusión.

Note:

Cuando se activa el Cálculo inteligente, los bloques de datos recién calculados no se marcan como limpios después de un cálculo parcial de una base de datos. Al calcular un subjuego de una base de datos, puede utilizar el comando SET CLEARUPDATESTATUS AFTER para asegurarse de que los bloques recién calculados se marcan como limpios. El uso de este comando garantiza que Essbase vuelva a calcular la base de datos de la forma más eficaz posible mediante Intelligent Calculation.

Calcular listas de miembros

Las funciones de cálculo del conjunto de miembros de Essbase generan una lista de miembros que se basa en un miembro especificado.

Por ejemplo, la función @IDESCENDANTS genera una lista de todos los descendientes de un miembro especificado. Cuando se utiliza una función de conjunto de miembros en una fórmula, Essbase genera una lista de miembros antes de calcular la fórmula.

En el siguiente ejemplo, el uso del comando @IDESCENDANTS en el miembro Total Expenses genera una lista de estos miembros: Total Expenses, en sí mismo, y sus descendientes, que son Marketing, Nómina y Varios:

@IDESCENDANTS("Total Expenses");

Uso del comando FIX

Utilice el comando FIX en los scripts de cálculo de almacenamiento de bloques de Essbase para definir qué miembros incluir en el cálculo. Los bloques FIX le permiten optimizar el rendimiento evitando el exceso de cálculo. FIX también permite calcular partes separadas del cubo mediante distintas fórmulas.

Un bloque FIX en el script de cálculo ayuda a definir segmentos de datos que se incluirán en el cálculo.

Por ejemplo, el siguiente bloque FIX calcula sólo los valores de Presupuesto para los descendientes de East (Nueva York, Massachusetts, Florida, Connecticut y New Hampshire):

FIX(Budget,@DESCENDANTS(East))
   CALC DIM(Year, Measures, Product);
ENDFIX

El siguiente ejemplo corrige las combinaciones de miembros para los hijos de East que tienen un UDA de New Mkt:

FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
   Marketing = Marketing * 1.1;
ENDFIX

El siguiente ejemplo utiliza una coincidencia con comodines (???) para corregir los nombres de miembros que terminan en los caracteres -10, que son los miembros 100-10, 200-10, 300-10 y 400-10:

FIX(@MATCH(Product, "???-10"))
   Price = Price * 1.1;
ENDFIX

Cuando se utiliza el comando FIX sólo en una dimensión densa, Essbase recupera todo el bloque que contiene el valor o valores necesarios para los miembros que especifique. La E/S no se ve afectada y se mejora el tiempo de rendimiento del cálculo.

Cuando se utiliza el comando FIX en una dimensión ligera, Essbase recupera el bloque para los miembros de dimensión ligera especificados. La E/S se puede reducir considerablemente.

Essbase recorre la base de datos una vez para cada comando FIX que utilice en miembros de dimensiones densas. Cuando sea posible, combine bloques FIX para mejorar el rendimiento del cálculo.

Por ejemplo, al utilizar un comando FIX, el siguiente script de cálculo hace que Essbase pase por la base de datos solo una vez, calculando los valores Real y Presupuesto:

FIX(Actual,Budget)
   CALC DIM(Year, Measures);
ENDFIX

Por el contrario, al utilizar dos comandos FIX, el siguiente script de cálculo hace que Essbase pase dos veces por la base de datos: una vez se calculan los valores de datos reales y otra vez se calculan los valores de datos de presupuesto:

FIX(Actual)
   CALC DIM(Year, Measures);
ENDFIX
FIX(Budget)
   CALC DIM(Year, Measures);
ENDFIX

No puede ejecutar FIX en un subjuego de una dimensión que calcule dentro de un comando FIX. Por ejemplo, el siguiente script de cálculo devuelve un mensaje de error porque la operación CALC DIM calcula toda la dimensión Market, aunque el ajuste que aparece arriba se corrige en miembros específicos de la dimensión Market:

FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
   CALC DIM(Year, Measures, Product, Market);
ENDFIX

Los comandos FIX se pueden anidar en otros bloques de comandos FIX. Sin embargo, el uso incorrecto de los comandos FIX anidados puede generar resultados incorrectos. Por ejemplo, la intención del siguiente script de cálculo es asignar 1 a todos los secundarios de East y, a continuación, asignar 2 a Nueva York:

FIX (@CHILDREN(EAST))
   "100-10"=1;
      FIX ("New York")
         "100-10"=2;
      ENDFIX
ENDFIX

Sin embargo, el comando FIX anidado se corrige en un subjuego de la dimensión especificada por el comando FIX encima de él (que no está permitido); por lo tanto, el script asigna 2 a todos los secundarios de East porque el script se ejecuta como si se hubiera escrito como:

FIX (@CHILDREN(EAST),''New York'')
   "100-10"=1;
   "100-10"=2;
ENDFIX

En lugar de utilizar comandos FIX anidados, utilice dos bloques de comandos FIX independientes. Por ejemplo:

FIX (@CHILDREN(EAST))
   "100-10"=1;
ENDFIX

FIX ("New York")
   "100-10"=2;
ENDFIX

La variable (varName) definida por un comando de cálculo VAR no se puede utilizar en la sentencia miembro FIX. Los miembros FIX se evalúan antes de que se ejecute el cálculo y las variables se evalúan durante el tiempo de ejecución después de definir la sentencia FIX. Debido a que las variables pueden cambiar durante la ejecución del cálculo, no puede utilizar la variable como parte de la sentencia FIX. El siguiente ejemplo muestra el uso incorrecto de la variable en la sentencia de miembro FIX:

VAR varName=1;
FIX (@relative(@memberat(@List("Product1","Product2"),varName),0))
   COMMANDS;
ENDFIX

Consulte también

FIX…ENDFIX

Uso del comando Exclude

Utilice el bloque de comando EXCLUDE..ENDEXCLUDE en los scripts de cálculo de almacenamiento de bloques de Essbase para definir qué miembros excluir del cálculo.

A veces es más fácil especificar qué miembros no incluir en un cálculo que definir qué miembros incluir.

Es posible que especificar miembros que no se deben calcular en un comando EXCLUDE…ENDEXCLUDE sea más sencillo que especificar una combinación compleja de nombres de miembros en un comando FIX…ENDFIX.

Consulte también

EXCLUIR…EXCLUIR