Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola
Necesito calcular las diferencias de precio para un sitio en particular ponderado por los kilos.
Del ejemplo que se adjunta, requiero calcular la columna dif = sumatoria de las diferencias de precio para un sitio multiplicado por los kilos.
La complejidad radica que el resultado de la columna dif tiene que ser dinámico para N sitios. Los sitios pueden ir variando a medida que se utilicen distintas combinaciones de filtro.
Lo otro que el valor del precio lo tengo construido en una sola medida, lo que me hace dificil realizar la resta.
Agradeceré vuestra ayuda.
De antemano gracias.
Mario Ortiz Lazo
Prime-e
HI @Mortiz,
No estoy tan seguro de su estructura de la tabla, ¿puede compartir algunos datos ficticios para probar?
Cómo obtener respuesta rápida a su pregunta
Además, puede intentar utilizar la siguiente fórmula de medida si es adecuada para sus necesidades:
Measure =
VAR currkilos =
CALCULATE (
SUM ( table[value] ),
FILTER ( table, [site] = "kilos" ),
VALUES ( table[rango] ),
VALUES ( table[sitio] )
)
VAR summary =
SUMMARIZE (
FILTER ( table, [site] <> "kilos" && [site] <> "diff" ),
[rango],
[sitio],
[site],
"total", SUM ( table[value] )
)
RETURN
SUMX ( summary, currkilos - [total] ) * currkilos
saludos
Xiaoxin Sheng
Gracias por la ayuda, aun no he podido resolverlo con la formula enviada.
La estructura de la tabla es la siguiente:
El precio viene del calculo de una medida de una tabla anterior.
Sitio | kilos | Precio | rango |
Sitio 2 | 0,32498656 | 0,77329291 | >32 |
Sitio 2 | 0,18944823 | 0,10221396 | 28-30 |
Sitio 2 | 0,32441327 | 0,77011824 | 26-28 |
Sitio 2 | 0,96794202 | 0,07210124 | 24-25 |
Sitio 2 | 0,96530041 | 0,01743075 | 22-24 |
Sitio 2 | 0,54640871 | 0,3242894 | 26-28 |
Sitio 2 | 0,30754043 | 0,01190993 | 22-24 |
Sitio 2 | 0,74980047 | 0,95539555 | 28-30 |
Sitio 2 | 0,37460999 | 0,49093909 | 24-25 |
Sitio 2 | 0,51586952 | 0,73825355 | 24-25 |
Sitio 3 | 0,68969797 | 0,1250866 | 24-25 |
Sitio 3 | 0,23950637 | 0,44562482 | 26-28 |
Sitio 3 | 0,8619103 | 0,27293254 | 28-30 |
Sitio 3 | 0,87682504 | 0,82933457 | 22-24 |
Sitio 3 | 0,16664113 | 0,77760338 | 24-25 |
Sitio 3 | 0,53439738 | 0,06658418 | 28-30 |
Sitio 3 | 0,01446091 | 0,61405017 | 26-28 |
Sitio 3 | 0,34323165 | 0,83421635 | 22-24 |
Sitio 3 | 0,99100039 | 0,72150281 | 24-25 |
Sitio 3 | 0,15734091 | 0,80886052 | 28-30 |
Sitio 1 | 0,0780961 | 0,56291788 | 28-30 |
Sitio 1 | 0,78275947 | 0,02478303 | 24-25 |
Sitio 1 | 0,83266673 | 0,69460931 | 26-28 |
Sitio 1 | 0,46107876 | 0,28689272 | 22-24 |
Sitio 1 | 0,7934675 | 0,68517226 | >32 |
Sitio 1 | 0,51215635 | 0,03011704 | 26-28 |
Sitio 1 | 0,2473833 | 0,67200609 | 22-24 |
Sitio 1 | 0,84154261 | 0,44531639 | 24-25 |
Sitio 1 | 0,28031881 | 0,93173736 | >32 |
Sitio 1 | 0,1953479 | 0,45932768 | 28-30 |
Saludos,
Mario Ortiz
Hola @Mortiz,
Puede consultar los pasos siguientes para lograr sus requisitos.
1. Haga una columna sin pivotar en los campos Pirce y Kilos.
Columnas sin pivotar (consulta de energía)
2. Cree un objeto visual de matriz con el rango como fila, sitio, tipo (campo de atributo sin pivotar) como columna.
3. Escriba una fórmula de medida para usar su contenido de fila para calcular el resultado y utilizarla en los campos de valor de la matriz.
Measure =
VAR currKilo =
CALCULATE (
SUM ( T2[Value] ),
FILTER ( ALLSELECTED ( T2 ), T2[Type] = "Kilos" ),
VALUES ( T2[Range] ),
VALUES ( T2[Site] )
)
VAR price =
CALCULATE (
SUM ( T2[Value] ),
FILTER ( ALLSELECTED ( T2 ), T2[Type] = "Price" ),
VALUES ( T2[Range] ),
VALUES ( T2[Site] )
)
VAR siteCount =
COUNTROWS ( EXCEPT ( ALLSELECTED ( T2[Site] ), VALUES ( T2[Site] ) ) )
VAR totalPrice =
CALCULATE (
SUM ( T2[Value] ),
FILTER (
ALLSELECTED ( T2 ),
NOT ( [Site] IN VALUES ( T2[Site] ) )
&& [Type] = "Price"
),
VALUES ( T2[Range] )
)
RETURN
IF (
ISFILTERED ( T2[Type] ),
SUM ( T2[Value] ),
( price * siteCount - totalPrice ) * currKilo
)
4. Agregue una tabla de clasificación para extraer el valor del rango y agregue campos de 'orden', luego establezca los campos de orden como el campo 'ordenar por columna' de rango y utilícelo para reemplazar el campo de rango de matriz.
Ordenar por columna en Power BI Desktop Ordenación personalizada en Power BI
Sort =
ADDCOLUMNS (
VALUES ( T2[Range] ),
"Order",
VAR result =
PATHITEM ( SUBSTITUTE ( [Range], "-", "|" ), 1 )
RETURN
IF (
SEARCH ( ">", result, 1, -1 ) > 0,
RIGHT ( result, LEN ( result ) - 1 ),
result
)
)
Diseño y resultado de la matriz:
BTW, también adjunté el archivo de ejemplo a continuación si se confunde acerca de estos pasos.
saludos
Xiaoxin Sheng
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
1 | |
1 | |
1 |