none
Consulta MDX Condicional RRS feed

  • Pregunta

  • Buenos dias,
    Como puedo hacer una consulta MDX que pueda seleccionar entre un miembro calculado u otro segun la fecha seleccionada en la misma consulta, es dicr, algo como:
      SELECT {[Fecha].[All Fecha].[2010].[March].[10]} ON columns,
      {
     Si Fecha < '9/3/2010' [Indicador_1] else  [Indicador_2]
     } ON rows FROM Cubo1

    Salu2.

    jueves, 11 de marzo de 2010 16:38

Respuestas

  • Hola.

    Tendrías que ir más o menos por este camino, creando un miembro calculado:


    with member [Measures].[Calcular Peso] AS 
    IIF([Dim Tiempo].[Tiempo].CurrentMember IS [Dim Tiempo].[Tiempo].[Anyo].&[2010], 
    	<<Calcular el peso con 5 balanzas>>, 
    	<<Calcular el peso con 2 balanzas>>)

    Es decir, si estás en un año, calculas de una manera, si no de otra. Ten en cuenta también que puede que no estés navegando por el año, si no por el mes, con lo que deberás posicionarte adecuadamente en la jerarquía.

    Si no lo logras, nos dices.

    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 12 de marzo de 2010 13:59
    Moderador
  • Si, gracias x su ayuda; el IIF con el CurrentMember.Parent no me soportada el menor que "<", entonces use el OR con los distintos meses.

    Salu2.

    lunes, 22 de marzo de 2010 16:33

Todas las respuestas

  • Hola.


    Si no lo logras, nos dices.

    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    jueves, 11 de marzo de 2010 17:05
    Moderador
  • Hola.


    Si no lo logras, nos dices.

    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)

    Hola, el CASE es soportado x OLAP 2000?

    Salu2.
    jueves, 11 de marzo de 2010 18:20
  • Hola.

    No, se introduce con SSAS 2005. Puedes hacer algo similar (aunque más complicado) "iif". 


    En la ayuda de SQL Server 2008 tienes un par de ejemplos: http://msdn.microsoft.com/es-es/library/ms145994.aspx



    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    jueves, 11 de marzo de 2010 19:20
    Moderador
  • Hola.

    No, se introduce con SSAS 2005. Puedes hacer algo similar (aunque más complicado) "iif". 


    En la ayuda de SQL Server 2008 tienes un par de ejemplos: http://msdn.microsoft.com/es-es/library/ms145994.aspx



    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)

    Si, es justo lo que estaba probando, ahora el tema es tengo que filtrar o cortar por la fecha o rango de fecha en que me solicitan con distinto indicador para un valor devuelto, como podria hacer eso?, quizas x el "CurrentMember" pero no se como instanciarlo?
    jueves, 11 de marzo de 2010 20:05
  • Hola.

    Creo que no entiendo lo que necesitas, pero no se parece mucho a lo que preguntabas originalmente. ¿Puedes explicar la funcionalidad que precisas cubrir o poner un ejemplo concreto? Hacerlo de forma abstracta, dando parte de la solución, es lo que hace que me pierda en tu última cuestión.


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    jueves, 11 de marzo de 2010 21:22
    Moderador
  • Hola.

    Creo que no entiendo lo que necesitas, pero no se parece mucho a lo que preguntabas originalmente. ¿Puedes explicar la funcionalidad que precisas cubrir o poner un ejemplo concreto? Hacerlo de forma abstracta, dando parte de la solución, es lo que hace que me pierda en tu última cuestión.


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)

    Hola, necesito hacer una consulta MDX que dependiendo de la fecha consultada me devuelva el valor de un indicador (miembro calculado) o de otro indicador en una variable solicitada con el problema adicional que si me piden un rango de fechas tengo que devolver el valor del indicador en el rango que aplique.
    Por ejemplo: antes de enero 2010 el peso calculado era la suma de 2 balanzas y a partir de enero 2010 el peso calculado es el peso de 5 balanzas, en la consulta MDX no puedo cambiar simplemente por el nuevo miembro calculado (que contempla las suma de 5 balanzas) xq si me piden la consulta para antes de enero 2010 debo seguir devolviendo el "viejo" indicador (el que sumas 2 balanzas), se entiende el problema?
    Salu2.
    viernes, 12 de marzo de 2010 12:10
  • Hola.

    Tendrías que ir más o menos por este camino, creando un miembro calculado:


    with member [Measures].[Calcular Peso] AS 
    IIF([Dim Tiempo].[Tiempo].CurrentMember IS [Dim Tiempo].[Tiempo].[Anyo].&[2010], 
    	<<Calcular el peso con 5 balanzas>>, 
    	<<Calcular el peso con 2 balanzas>>)

    Es decir, si estás en un año, calculas de una manera, si no de otra. Ten en cuenta también que puede que no estés navegando por el año, si no por el mes, con lo que deberás posicionarte adecuadamente en la jerarquía.

    Si no lo logras, nos dices.

    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 12 de marzo de 2010 13:59
    Moderador
  • Gracias x la respuesta, me funciona bien sobre el año.
    IIF([Fecha].CurrentMember IS [Fecha].[Year].&[2010], [Calc1], [Calc2] )

    El CurrentMember va siempre sobre [Tiempo] aunque se filtrando x mes?, por que he probado por ejemplo sobre [Fecha].[Year].&[2010].&[2] o sobre [Fecha].[Month].&[2] y no funciona el IIF (siempre me da false).
    Salu2.
    viernes, 12 de marzo de 2010 18:59
  • Hola.

    Como te decía, si no navegas por el año, primero debes posicionarte en el año. Evidentemente, "Febrero" nunca será el 2010. En ese caso, debes atacar por ....CurrentMember.Parent.

    Existen numerosas funciones para navegar por las jerarquías. Te paso un link a las funciones, verás que gran parte de ellas están relacionadas con este tema.


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 12 de marzo de 2010 19:15
    Moderador
  • Hola.

    ¿Pudiste construir la consulta?


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    viernes, 19 de marzo de 2010 18:07
    Moderador
  • Si, gracias x su ayuda; el IIF con el CurrentMember.Parent no me soportada el menor que "<", entonces use el OR con los distintos meses.

    Salu2.

    lunes, 22 de marzo de 2010 16:33