Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

¿Cómo sumar valores basados en una segmentación de datos (columna1) y un ID de referencia o grupo (otra columna2)?

Hola a todos!

Tengo un ejemplo de datos de prueba / escenario de Power BI en el siguiente vínculo: https://drive.google.com/file/d/1EGEfkwvkozr7FnuTfGWR9tcZKSPk5hT5/view?usp=sharing

test2.JPG

Lo que quiero lograr es al seleccionar el productId en la segmentación de datos de la izquierda (en la imagen de arriba), obtendrá las ventas compartidas donde cuando ReferenceGroupId no esté en blanco, obtendrá / usará las ventas del producto referenciado. Por ejemplo, si selecciono los productos 2 y 3, quiero que la suma de las ventas en la TABLA2 se muestre de la siguiente manera:

ProductId | Suma de ventas

2 | 150,000

3 | 150,000

Y cuando selecciono todos los productos en la rebanadora (2 ~ 6), quiero obtener el valor total de 310,000 con ventas de productos 2 a 3 solo obteniendo una suma de 150,000 incluso sin seleccionar el producto 1 (ya que es un valor de venta compartido) y poder mostrarlo en una Tarjeta Visual.

El problema parece ser un poco simple, pero ya he pasado algunas horas tratando de abordarlo. Cualquier dirección o pista sobre cómo resolver esto será muy apreciada. ¡Gracias!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hay @iamriz ,

Estos son los pasos que puede seguir:

1. Crear medida.

Measure =
var _select=SELECTEDVALUE('SalesInfo'[ProductId])
var _sum=CALCULATE(SUM('SalesInfo'[Sales]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId]<_select))
var _rp=CALCULATE(SUM('SalesInfo'[ReferenceProductId]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId] = _select))
return
IF(
    _rp <> BLANK(), _sum,CALCULATE(SUM('SalesInfo'[Sales]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId] = _select))
)
Sum of Sales =
VAR __table = SUMMARIZE('SalesInfo',[ProductId],"__value",[Measure])
var _productid=SELECTCOLUMNS('SalesInfo',"1",[ProductId])
RETURN
IF(HASONEVALUE('SalesInfo'[ProductId]),[Measure],
SWITCH(
TRUE(),
1 in _productid||2 in _productid||3 in _productid,
SUMX(FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId]=1),'SalesInfo'[Sales])+SUMX(FILTER(__table,NOT([ProductId] in {1,2,3})),[__value]),
SUMX(__table,[__value])))

2. Resultado:

Elija 3, 4, 5, 6 y el resultado es:

vyangliumsft_0-1632288428440.png

Elija 1, 2, 3, 4, 5, 6 y el resultado es:

vyangliumsft_1-1632288428443.png

Elige 1, 2, 3, el resultado es:

vyangliumsft_2-1632288428457.png

¿Coincide esto con el resultado esperado?

Saludos

Liu Yang

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hay @iamriz ,

Estos son los pasos que puede seguir:

1. Crear medida.

Measure =
var _select=SELECTEDVALUE('SalesInfo'[ProductId])
var _sum=CALCULATE(SUM('SalesInfo'[Sales]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId]<_select))
var _rp=CALCULATE(SUM('SalesInfo'[ReferenceProductId]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId] = _select))
return
IF(
    _rp <> BLANK(), _sum,CALCULATE(SUM('SalesInfo'[Sales]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId] = _select))
)
Sum of Sales =
VAR __table = SUMMARIZE('SalesInfo',[ProductId],"__value",[Measure])
var _productid=SELECTCOLUMNS('SalesInfo',"1",[ProductId])
RETURN
IF(HASONEVALUE('SalesInfo'[ProductId]),[Measure],
SWITCH(
TRUE(),
1 in _productid||2 in _productid||3 in _productid,
SUMX(FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId]=1),'SalesInfo'[Sales])+SUMX(FILTER(__table,NOT([ProductId] in {1,2,3})),[__value]),
SUMX(__table,[__value])))

2. Resultado:

Elija 3, 4, 5, 6 y el resultado es:

vyangliumsft_0-1632288428440.png

Elija 1, 2, 3, 4, 5, 6 y el resultado es:

vyangliumsft_1-1632288428443.png

Elige 1, 2, 3, el resultado es:

vyangliumsft_2-1632288428457.png

¿Coincide esto con el resultado esperado?

Saludos

Liu Yang

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hay @iamriz ,

Estos son los pasos que puede seguir:

1. Crear medida.

Measure =
var _select=SELECTEDVALUE('SalesInfo'[ProductId])
var _sum=CALCULATE(SUM('SalesInfo'[Sales]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId]<_select))
var _rp=CALCULATE(SUM('SalesInfo'[ReferenceProductId]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId] = _select))
return
IF(
    _rp <> BLANK(), _sum,CALCULATE(SUM('SalesInfo'[Sales]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId] = _select))
)
Sum of Sales =
VAR __table = SUMMARIZE('SalesInfo',[ProductId],"__value",[Measure])
RETURN
IF(HASONEVALUE('SalesInfo'[ProductId]),[Measure],SUMX(__table,[__value]))

2. Resultado:

Se mostrarán las selecciones 4, 5, 6 y 160.000:

vyangliumsft_0-1632213440562.png

Elija 3, 4, 5, 6 productos, luego se mostrarán 310,000:

vyangliumsft_2-1632213591522.png

Saludos

Liu Yang

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente

Hola @v-yangliu-msft, gracias por tu ayuda. Pero, elegir 3, 4, 5, 6 productos debe mostrar 310,000 en la tarjeta visual. De la misma manera que la elección de 1,2,3,4,5,6 productos también debe mostrar 310,000. Desde los productos 1,2,3 tiene unas ventas combinadas de 150.000. Seleccionar uno o más entre 1,2,3 productos en la rebanadora solo debe tener unas ventas máximas de 150,000.

Syndicate_Admin
Administrator
Administrator

Hay @iamriz ,

Estos son los pasos que puede seguir:

1. Crear medida.

Measure =
var _select=SELECTEDVALUE('SalesInfo'[ProductId])
var _sum=CALCULATE(SUM('SalesInfo'[Sales]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId]<_select))
var _rp=CALCULATE(SUM('SalesInfo'[ReferenceProductId]),FILTER(ALL('SalesInfo'),'SalesInfo'[ProductId]=_select))
return
IF(
    _rp <> BLANK(), _sum,SUMX(ALL('SalesInfo'),'SalesInfo'[Sales])
)

2. Resultado:

Cuando la segmentación de datos es 2, 3, el resultado es:

vyangliumsft_0-1632103440909.png

Cuando la segmentación de datos es otro valor, el resultado es:

vyangliumsft_1-1632103440911.png

Saludos

Liu Yang

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente

Hola @v-yangliu-msft, gracias por su respuesta. Lo agradezco mucho. Queda un problema con la solución sugerida. Incluso si solo selecciono 4,5,6 productos en la rebanadora, el total sigue siendo de 310,000 si muestro "Medida" en una tarjeta visual. Quería que se mostrara 160,000 si solo se seleccionan 4,5,6. Luego, si se seleccionan 3 ~ 6 productos, se mostrarán 310,000. Amablemente aconsejado, gracias!

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors