Principales respuestas
Como obtener la sumatoria de dos Medidas

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)
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- Marcado como respuesta Miguel Egea GómezMVP, Moderator jueves, 12 de noviembre de 2015 13:30
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
-
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 -
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.
- Editado MANDRAKE2001 jueves, 5 de noviembre de 2015 1:14
-
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- Marcado como respuesta Miguel Egea GómezMVP, Moderator jueves, 12 de noviembre de 2015 13:30