none
MDX Problema con Filter para crear un Conjunto de datos con Nombre RRS feed

  • Pregunta

  • Buenas tardes a todos

    Tengo problemas con la Función Filter, voy a tratar de ser lo mas claro posible para ver si uno de ustedes me puede dar una explicación. De antemano agradezco cualquier ayuda que me puedan brindar.

    OBJETIVO FINAL: Crear un conjunto de datos con Nombre 

    1 PARTE:  El resultado que necesito: tengo una sentencia que me brinda el resultado deseado: 

    select  [Measures].[Imp Total Cartera] ON 0
    ,
    NONEMPTY([Ramo Técnico].[Código].members) on 1
    
    from (select [R Dias Cartera Def].[Rango 1].&[d Mayor 75] on 0 from [CarteraInv])
    where
    (
    [Fecha Corte].[CalendarioAñoMes].[Fecha yyyymmdd].&[2011/11/30]
    ,[Compañia].[Compañía].&[Generales]
    )
    Ramo Total Cartera
    All  $2,880,525,301 
    1          $8,996,477 
    2          $32,667,579 
     3          $54,012,943 
    4           $32,970,872 

    2 PARTE:  Utilizando la función filter: obtengo el siguiente resultado, con una columna de más que no deseo, la  columna Lapso: 

    select [Measures].[Imp Total Cartera] on 0
    ,
    NONEMPTY(
    (
    ([Ramo Técnico].[Código].MEMBERS),
    FILTER(
    [R Dias Cartera Def].[Rango 1].members
    ,[R Dias Cartera Def].[Rango 1].CurrentMember 
    IS 
    [R Dias Cartera Def].[Rango 1].[Rango 1].item(2)
    ) 
    )
    )  on 1
    
    from [CarteraInv]
    where
    (
    [Fecha Corte].[CalendarioAñoMes].[Fecha yyyymmdd].&[2011/11/30]
    ,[Compañia].[Compañía].&[Generales]
    )
    Ramo Lapso Total Cartera
    All      75 días  $2,880,525,301 
    1      75 días  $8,996,477 
    2      75 días  $32,667,579 
         75 días $54,012,943 
    4      75 días  $32,970,872 

    3 PARTE:  Creando la función filter como la necesito: o sorpresa no funciona, no obtengo ningun resultado.

    select [Measures].[Imp Total Cartera] on 0
    ,
    NONEMPTY(
    (
    FILTER(
    [Ramo Técnico].[Código].members
    ,[R Dias Cartera Def].[Rango 1].CurrentMember 
    IS 
    [R Dias Cartera Def].[Rango 1].[Rango 1].item(2)
    ) 
    )
    )  on 1
    
    from [CarteraInv]
    where
    (
    [Fecha Corte].[CalendarioAñoMes].[Fecha yyyymmdd].&[2011/11/30]
    ,[Compañia].[Compañía].&[Generales]
    )
    

    Por favor me pueden indicar que estoy haciendo mal o si estoy pasando algún concepto de MDX por alto, muchas gracias

    viernes, 30 de diciembre de 2011 19:26

Respuestas

  • Hola,


    Puede que el problema sea el filtro en si que estes utilizando.

    [R Dias Cartera Def].[Rango 1].CurrentMember 
    IS 
    [R Dias Cartera Def].[Rango 1].[Rango 1].item(2)

    • Recuerda que el "CurrentMeber", te retorna el valor actual alque apunta la fila o columna.
    • Los valores de arreglos, siempre inician en cero.

                       Ejemplo

                                  valor              indiceMatriz

                                   ahias             0

                                    lopez             1

                                    portillo           2

                    si yo quiero referencial a Lopez, tendria que realizar un ".Item(1)" y no ".Item(2)"

    • Segun veo en tu query, el filtro me indica que voy a analizar todos los miembros "[Ramo Técnico].[Código].members", que esten en el rango "[R Dias Cartera Def].[Rango 1].[Rango 1].item(2)", si y solo si el "CurrentMember" es el Item(2) de [R Dias Cartera Def].[Rango 1].[Rango 1].

    Si lo que deseas es filtrar columnas, puedes especificarlas en el query. Tambien puedes hacer CrossJoin (http://msdn.microsoft.com/es-es/library/ms144816.aspx). Si tienes un poco mas de detalle, con pantallitas del resultado final ayudaria.

    Saludos cordiales


    Ahias Portillo

    lunes, 27 de agosto de 2012 3:22