none
Cálculo de total con error #Valor RRS feed

  • Pregunta

  • Buenas a todos.

    Tengo la siguiente hoja de cálculo que muestra datos de un cubo:

    En filas tengo la dimensión Dim_Proyectos filtrada para que solo aparezcan 2 proyectos. Como se ve también tengo en el área de filtros de Excel la dimensión Tiempo filtrada para que aparezcan datos relativos a Febrero de 2012.

    Mi problema es que en la linea de Total General me aparece un error. Y esto es porque el cálculo [Importe Vta Líquido Firme] necesita un dato llamado [Version Aprobada a Fecha] que se resuelve bien para cada proyecto (por eso en cada línea de proyecto el cálculo me muestra un valor numérico correcto), pero no se puede resolver a nivel de Total General. En concreto el cálculo  [Importe Vta Líquido Firme] que tengo definido actualmente es:

    ([Measures].[Importe Venta Líquido Firme],

              strtomember('[Dim_Version_Proyecto].[Version Proyecto].&['+ cstr([Version Aprobada a Fecha]) + ']', CONSTRAINED)

    Tengo claro que el cálculo que debería hacer es (mas o menos en pseudocódigo):

    CASE

       WHEN Si_estoy_en_el_miembro_All_de_la_Dimension_Proyectos THEN Esta_es_la_parte_de_calculo_que_no_se_como_hacer

       ELSE  

             ([Measures].[Importe Venta Líquido Firme],

              strtomember('[Dim_Version_Proyecto].[Version Proyecto].&[' + cstr([Version Aprobada a Fecha])      + ']',CONSTRAINED)

    END

    En Esta_es_la_parte_de_calculo_que_no_se_como_hacer debo tener en cuenta que solo debe aparecer la suma de los proyectos visibles en la Excel (los que están ocultos no se deben sumar). Esto no tengo claro como hacerlo. He pensado que se debería hacer con Existing, pero la verdad es que no me aclaro.

    ¿Alguna idea?. 

    miércoles, 22 de febrero de 2012 17:34

Respuestas

  • Me contesto yo. 

    Efectivamente, la solución ha pasado por hacer el cálculo tal y como propongo en pseudocódigo en el correo anterior. En concreto:

    Si_estoy_en_el_miembro_All_de_la_Dimension_Proyectos lo he evaluado con esta comparación:

    ([Dim_Proyectos].[Proyecto].currentmember.level.ordinal = 0)

    Y el bloque Esta _es_la_parte_de_calculo_que_no_se_como_hacer (que ahora sí se hacer, ;) ) es:

    sum(
                             EXISTING( [Dim_Proyectos].[Proyecto].[Proyecto].MEMBERS), 
                             [Measures].[Importe Venta Líquido Firme]
                            )

    Esto me está funcionando OK, teniendo en cuenta que todos los filtros los ponga en el área de filtros de Excel, y de hecho es así como quiero que funcione actualmente. Por tanto me doy a mi mismo esta solución por buena.

    Ahora bien, aunque no me afecte a día de hoy, si he notado que el cálculo del existing no hace caso a los filtros que se hagan mediante filtros en filas o columnas. Pero esto es otro problema y lo voy a exponer en otro hilo, para ver si a alguien se le ocurre porqué.


    lunes, 27 de febrero de 2012 12:04