Forzar en MicroStrategy la consulta de valores precalculados de un indicador para diferentes niveles de agregación o atributos

Tengo un indicador de Microstrategy que para diferentes atributos o incluso para diferentes niveles de la misma jerarquía tiene que mostrar valores que no se pueden calcular con los métodos de agregación estandar, es decir, que no se puede calcular dinámicamente el paso de un nivel a otro con funciones tipo suma, media, etc.

Para poder implementarlo he creado una tabla agregada con su valor precalculado para cada nivel o atributo para el que necesito mostrar el indicador. Así, sólo con seleccionar el indicador en un informe, el motor analítico de Microstrategy ya va a buscar el valor a la tabla correcta en función del atributo que utilice, siempre que utilice un sólo atributo.

El problema lo tengo cuando quiero mostrar en el mismo informe dos atributos cuyos valores para ese indicador se encuentran en dos tablas agregadas diferentes, o un atributo y un nivel de agregación superior. En este caso, el motor consulta y muestra correctamente el valor de la tabla agregada de nivel inferior, pero para el otro atributo (u otro nivel del mismo atributo), en lugar de ir a consultar la otra tabla agregada que he creado, aplica la fórmula de agregación correspondiente, o no muestra ningún valor si no selecciono ningún tipo de agregación.

La cuestión es si se puede definir el indicador de manera que en lugar de utilizar funciones de agregación vaya siempre a consultar los valores de todos los niveles en las tablas agregadas, o si hay otra manera de resolver este planteamiento.

Alguien tiene alguna sugerencia?

 

Ya ha pasado tiempo, pero creo que merece la pena explicar la sugerencia que me hizo Lourdes, y que ha sido lo que finalmente implementé y está funcionando:

La propuesta era crear, en lugar de una tabla agregada para las agrupaciones, con un mismo indicador que se utilizara a diferentes niveles, hacer una versión más desnormalizada y dejar todo en una misma tabla de hechos, creando un indicador para cada nivel o combinación que necesitemos. Así, en los informes no puede haber duda sobre la agrupación que hay detrás del indicador.

Como explicado así seguramente no se entiende demasiado bien, mejor repito la explicación con un ejemplo, parecido al del caso real en el que surgió esta duda.

Se trataba de trabajar con un indicador de DSO (Days Sales Outstanding) que mide básicamente el tiempo que se tarda en cobrar las facturas de clientes. Este indicador es complicado calcularlo al vuelo porque en el cálculo intervienen las fechas de emisión y de cobro de las facturas de un cliente, de un grupo de clientes, o de los clientes de un comercial, por ejemplo. Además, para calcular el DSO de un grupo de clientes no sirve realizar una operación como la media sobre el DSO de cada cliente, hay que realizar el cálculo sobre todas las facturas de ese grupo.

Total, que en cada carga el DSO se tiene que precalcular para cada cliente y para cada grupo. El problema es que si en un informe se hace, por ejemplo, un drill-up de un cliente a su grupo, como no podemos utilizar ninguna operación de agregacion para el indicador, hay que hacer que se consulte el valor precalculado para el grupo. Esto con MicroStrategy se puede resolver, tal como comentaba al abrir el tema, con una tabla agregada para el grupo que almacene los valores calculados a nivel de grupo.

Después sólo hay que asegurarse de que las estadísticas de las tablas estén bien para que MicroStrategy vaya a consultar la tabla agregada siempre que necesite el valor del DSO para grupos de clientes.

Esta solución es buena si los informes son relativamente sencillos, y sólo se cambia de nivel de cliente a grupo de cliente y viceversa a través de drill-up/drill-down. El problema viene cuando en un mismo informe se quiere mostrar tanto el valor del DSO del cliente, como el del grupo al que pertenece. En ese caso, el indicador de detalle (el nivel de cliente) se muestra correctamente, pero para el DSO del grupo el motor analítico intenta aplicar una fórmula de agregación en lugar de ir a la tabla agregada de grupos de cliente que contiene el valor precalculado correcto para cada grupo.

Sería genial que se pudiera indicar de alguna manera a MicroStrategy que para un indicador no realizara ninguna agregación por fórmula, sino que fuera siempre a buscar el valor del agregado a una tabla. Yo no he encontrado cómo hacerlo, pero no lo descarto, así que si alguien sabe cómo que lo comparta y le estaremos eternamente agradecidos :)

Bueno, la solución finalmente implementada, y no tan dinámica, pero mucho más segura, es crear una sola tabla para los clientes, con un indicador de DSO de cliente, y otro indicador de DSO de grupo, que obviamente tiene el mismo valor para todos los clientes del mismo grupo, y que permite mostrar todas las combinaciones posibles, y los dos indicadores a la vez.

De lo único que hay que asegurarse es de que al ejecutar los informes no se aplique ninguna fórmula de agregación sobre los indicadores de DSO, que eso sí es más sencillo.

Así, los campos y algunos valores de esta tabla de hechos podrían ser algo así:

idMes, idCliente, DSOCliente, DSOGrupo

201501       1               30                  28

201501       2               32                  28

201501       3               60                  40

...

Cliente 1 y 2 pertenecerían al mismo grupo, y el cliente 3 estaría en otro grupo de clientes.

 

Estimado buenos días, necesitaría saber cuanto estaría cobrando el valor hs un microstrategy? Desde ya muchas gracias Saludos cordiales