none
Como obtener la sumatoria de dos Medidas RRS feed

  • Pregunta

  • Hola buenos días, les dejo saber antes que nada soy novato en Analysis Services por lo que tal vez la pregunta sea muy obvia.

    Tengo una tabla de hechos como a continuación se las muestro.

    En cada operación hay 2 clientes, Comprador y Vendedor

    y así mismo existen dos columnas para almacenar la comisión cobrada a cada contraparte (cliente)  ComisionComprador y ComisionVendedor.

    Tengo una Dimensión de Clientes y esta está relacionada dos veces hacia la FactTable como a continuación les muestro.

    Qué calculo debo hacer en MDX y en que tabla debo hacerlo para que al final del deploy, el usuario desde un Excel

    arrastre al cliente y en ese momento le aparezcan todas las operaciones donde el cliente está operando ya sea como comprador o como vendedor. además de eso, quisiera que aparezca un Measure con el total de comisiones generadas (cuando es comprador + cuando es vendedor)

    Actualmente como lo tengo diseñado con esa relación, al crear el cubo se me genera dos dimensiones de clientes, una dimensión para comprador y otra para vendedor, por lo que el usuario desde Excel solo puede arrastrar al comprador o al vendedor por lo que no le están apareciendo todas las operaciones, y la sumatoria solo es de una sola contraparte.

    o le suma el BuyerFee o le suma el SellerFee (según la dimensión que arrastre al pivot table de Excel)

    martes, 3 de noviembre de 2015 21:11

Respuestas

  • Tenemos dos opciones para hacer esto.

    Opción 1.  Dinámica.

    La idea es utilizar un strtomember. en comprador.persona.currementmember.unique_name tienes el nombre único, sustituyendo el string comprador por vendedor algo así como

    (strtomember("vendedor."+substr(comprador.persona.currentmember.unique_name,10,100)

    ,

    Measures.Compras) +Measures.ventas

    te debe salir. lo que pasa es que no es fácil de entender ni de hacer. y además el rendimiento se puede ver penalizado

    Opción 2. Usa un truco.

    Mete tu grupo de medidas dos veces, en la dimensión comprador en el segundo grupo de medidas la relacionas no con comprador sino con vendedor, lo mismo  al revés para la dimensión vendedor, esta vez relacionada con el atributo comprador.

    Crea Tu métrica en el segundo grupo de medidas pero oculta.

    Tus ventas totales serán Measures.VentaOculta.

    Espero que se entienda si no ... me lo dices e intento escribir como hacerlo de forma detallada para portalsq.com


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    jueves, 5 de noviembre de 2015 12:13
    Moderador

Todas las respuestas

  • En un Trasact-SQL me es fácil hacerlo...

    primero hago la suma de la comisionComprador agrupado por Comprador

    y luego hago la suma de la comisiónVendedor agrupado por Vendedor

    y luego sumo ambas, eso es lo que quisiera hacer en mi cubo...

    Como ven, ya en una sola columna me sale el cliente, con la suma de ambas columnas

    Agradezco cualquier apoyo dado

    Saludos

    martes, 3 de noviembre de 2015 21:21
  • añade un campo calculado en tu DSV a tu tabla de hechos llamala TotalFee y haz que valva BuyerFee+SellerFee, crea una medida sobre ese campo nuevo y no necesitas hacer mdx.

    En cualquier caso en mdx es tan simplecomo

    Measures.BuyerFee+Measures.SellerFee


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    miércoles, 4 de noviembre de 2015 17:08
    Moderador
  • Gracias por responder Miguel,

    Pero crear una columna calculada no me resuelve mi problema, porque

    tengo que hacer la suma del BuyerFee cuando el cliente es Comprador y la Suma del SellerFee cuando el Cliente Es vendedor,

    En el siguiente ejmplo me debe traer 

    la suma de los clientes de la siguiente forma

    COMPRADOR    VENDEDOR    COMISION_COMPRADOR   COMISION_VENDEDOR
    SANTANDER     BANAMEX     15                    25   
    
    BANAMEX       BANCOMER     5                    3 

    EL RESULTADO QUE QUIERO ES:

    BANAMEX = 30

    SANTANDER = 15

    BANCOMER = 3

    Como ves, no se puede hacer la suma directa.



    jueves, 5 de noviembre de 2015 1:13
  • Tenemos dos opciones para hacer esto.

    Opción 1.  Dinámica.

    La idea es utilizar un strtomember. en comprador.persona.currementmember.unique_name tienes el nombre único, sustituyendo el string comprador por vendedor algo así como

    (strtomember("vendedor."+substr(comprador.persona.currentmember.unique_name,10,100)

    ,

    Measures.Compras) +Measures.ventas

    te debe salir. lo que pasa es que no es fácil de entender ni de hacer. y además el rendimiento se puede ver penalizado

    Opción 2. Usa un truco.

    Mete tu grupo de medidas dos veces, en la dimensión comprador en el segundo grupo de medidas la relacionas no con comprador sino con vendedor, lo mismo  al revés para la dimensión vendedor, esta vez relacionada con el atributo comprador.

    Crea Tu métrica en el segundo grupo de medidas pero oculta.

    Tus ventas totales serán Measures.VentaOculta.

    Espero que se entienda si no ... me lo dices e intento escribir como hacerlo de forma detallada para portalsq.com


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    jueves, 5 de noviembre de 2015 12:13
    Moderador