locked
Pregunta Medida Calculo urgente Division de un valor por el mismo pero a un nivel superior.. Urgente RRS feed

  • Pregunta

  • 1.       Cuota Pendiente (Wavg): Cuota promedio que faltan por pagar en el total de créditos, ponderando por el valor del crédito 

              SUM(Creditos.Plazo_NR - Cartera.CuotasFacturadas)*SUM(Creditos.MontoAprobado_VR)/SUM(Creditos.MontoAprobado_VR)

     

    Para este caso ya tengo la primer parte pero ahora necesito dividir por SUM(Creditos.MontoAprobado_VR) pero a un nivel superior es decir el total de la sumatoria de los detalles…

     

    El calculo lo tengo asi en este momento asi

    CASE WHEN  ISEMPTY( [Measures].[Monto Aprobado VR] )

        THEN 0

    ELSE

                   (([Measures].[Plazo NR]-[Measures].[Cantidad De Cuotas Facturadas])*([Measures].[Monto Aprobado VR]))

    /([Measures].[Monto Aprobado VR].PREVMEMBER) “ este tiene que ser a un nivel superior pero no se como  obtenerlo

         

    END

    lunes, 25 de julio de 2011 22:30

Respuestas

  • prevmember te da el elemento anterior, no el padre

    .parent es lo que necesitas, pero .parent no se aplica a Measures.  cuando dices a un nivel superior, te valta saber de que dimension. Entonces puedes poner algo así como

    Dimension.jerarquia.currentmember.parent

     

    ¿es eso lo que buscas?

     


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    martes, 26 de julio de 2011 8:28
    Moderador
  • Puedes especificarlas todas, siempre que no estes en el miembro All ( o como lo haya puesto), aunque tedioso haría lo que tu dices.

    (case when geografia.pais.currentmember is geografia.pais.&[all] then geografia.pais.currentmenber else geografia.pais.currentmember.parent,

     case when xxxx is xxx.&[all] thyen...

    )

     

    Lo que no veo es el sentido, normalmente estas cosas se hacen para decir la contribución de un pais al total, o de una provincia al total o al pais, o de un cliente a su grupo, pero suelen tener nombres distintos ya que la naturaleza que miden es diferente.

     

    Ya nos cuentas.


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    martes, 26 de julio de 2011 17:54
    Moderador
  • La respuesta, lamentablemente, es no. no hay un CurrentDimension.


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    martes, 26 de julio de 2011 19:20
    Moderador
  • Hola.

    Una alternativa que se me ocurre es que construyas la sentencia MDX en tiempo de ejecución o que prepares una consulta diferente para cada dimensión. ¿Qué estás usando para presentar los datos?

    Por cierto, para esa nueva funcionalidad surgida, tras "Role-playing measure" y ahora CurrentDimension, ¿qué pasa es que el MDX os parece fácil? ¿Se os ha quedado pequeño?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    martes, 26 de julio de 2011 20:09
    Moderador

Todas las respuestas

  • prevmember te da el elemento anterior, no el padre

    .parent es lo que necesitas, pero .parent no se aplica a Measures.  cuando dices a un nivel superior, te valta saber de que dimension. Entonces puedes poner algo así como

    Dimension.jerarquia.currentmember.parent

     

    ¿es eso lo que buscas?

     


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    martes, 26 de julio de 2011 8:28
    Moderador
  • Si amigo gracias de cierta forma es eso lo que necesito, pero ahora tengo una pregunta ya entendi que ese calculo queda limitado a la dimension que yo le ponga, ahora me surge otra pregunta... es posible sacar el nombre de la dimension y que dependiendo el nombre de la dimension con la que se este cruzando haga un calculo como el nombre de la dimension asi como tu me indicas. seria algo asi

     

    CASE WHEN  ISEMPTY( [Measures].[Monto Aprobado VR] )

    THEN

        CASE WHEN Nombredimension=Geografia

              THEN

    (([Measures].[Plazo NR]-[Measures].[Cantidad De Cuotas Facturadas])*([Measures].[Monto Aprobado VR]))

    / 

    ([Measures].[Plazo NR] /(Geografia.Pais.CurrentMember.Parent, [Measures].[Plazo NR]) 

     

    ELSE

    Y asi sucesivamente para validar las posibles dimensiones acruzar?...


    martes, 26 de julio de 2011 12:50
  • Puedes especificarlas todas, siempre que no estes en el miembro All ( o como lo haya puesto), aunque tedioso haría lo que tu dices.

    (case when geografia.pais.currentmember is geografia.pais.&[all] then geografia.pais.currentmenber else geografia.pais.currentmember.parent,

     case when xxxx is xxx.&[all] thyen...

    )

     

    Lo que no veo es el sentido, normalmente estas cosas se hacen para decir la contribución de un pais al total, o de una provincia al total o al pais, o de un cliente a su grupo, pero suelen tener nombres distintos ya que la naturaleza que miden es diferente.

     

    Ya nos cuentas.


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    martes, 26 de julio de 2011 17:54
    Moderador
  • lo que pasa es que dicho calculo se debe poder evalular por las diferentes dimensiones que tiene el cubo, ciclo_facturacion, geografia, tiempo, producto etc etc, al yo utilizar el .PARENT lo estoy limitando a que solo realice el calculo en el momento en que implique dicha dimension, mi pregunta : es posible de alguna forma utilizar el .PARENT pero que no tenga que especificar la dimension si no que el calculo tome el .PARENT de la dimension que se este cruzando en tiempo de consulta?...

     

    agradezco me puedas colaborar.

    martes, 26 de julio de 2011 18:18
  • La respuesta, lamentablemente, es no. no hay un CurrentDimension.


    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    martes, 26 de julio de 2011 19:20
    Moderador
  • amigo de que otra forma puedo llegar a evaluar ese calculo... ?? tal vez utiizando variables, no se .... no he encontrado como hacer dicho calculo.
    martes, 26 de julio de 2011 19:43
  • Hola.

    Una alternativa que se me ocurre es que construyas la sentencia MDX en tiempo de ejecución o que prepares una consulta diferente para cada dimensión. ¿Qué estás usando para presentar los datos?

    Por cierto, para esa nueva funcionalidad surgida, tras "Role-playing measure" y ahora CurrentDimension, ¿qué pasa es que el MDX os parece fácil? ¿Se os ha quedado pequeño?


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    martes, 26 de julio de 2011 20:09
    Moderador
  • el cubo sera consumido por EXCEL, PERFORMANCE POINT, SSRS, por ello necesito dejar el campo calculado.

    la verdad no tengo mucha experiencia en MDX por eso pregunto,

    como podria construir la consulta en tiempo de ejecucion?..

     Mdx es muy bueno solo que me piden un calculo que no se como sacar.. jejejejeje
    martes, 26 de julio de 2011 20:22
  • Hola.

    Entonces, tendrá que ser lo segundo, prepara un cálculo para cada dimensión. A lo mejor puede ser un poco tedioso, pero te funcionará.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/ Sígueme en twitter en http://twitter.com/qwalgrande

    martes, 26 de julio de 2011 20:43
    Moderador
  • Si es lo mas facil, pero mas tedioso, y mas complicado para el usuario final, de todas formas muchas gracias por la colaboracion.

    miércoles, 27 de julio de 2011 12:45
  • Si crees que alguna de estas respuestas es la buena, por favor, marcala como tal y si no, dinoslo que cerremos el hilo.
    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    viernes, 29 de julio de 2011 14:04
    Moderador
  • Parce que nuestro amigo Edwin perdió el interes por el hilo.
    Comparte lo que sepas, aprende lo que no sepas (FGG) http://www.portalsql.com
    lunes, 1 de agosto de 2011 20:43
    Moderador