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

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.

Reply
Syndicate_Admin
Administrator
Administrator

Crear medida basada en otro filtro - "IF(MAX(...) en ALLSELECTED(...), TRUE, FALSE) no funciona

Hola a todos

Tengo una mesa que se ve así

learner4eva_1-1643003015311.png

Y he creado 2 tablas para crear 2 filtros independientes.

FruitsList = RESUMIR(Frutas, Frutas[Frutas])
SellerList = RESUMIR(Frutas, Frutas[Vendedor])
He creado 2 medidas
IsFruit = IF(max(Fruits[Fruits]) en ALLSELECTED(FruitsList[Fruits]),1,0)
IsSeller = IF(max(Fruits[Seller]) en ALLSELECTED(SellerList[Seller]),1,0)
Me di cuenta de que IsSeller no funciona correctamente cuando elijo "A" como Vendedor.
Apple, Banana, Pineapple debería aparecer como 1 en la columna "IsSeller", pero solo "Banana" aparece como 1.
¿Puede ayudarme a entender por qué y cómo debo arreglar la medida? ¡Gracias!
learner4eva_2-1643003091925.png

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

@learner4eva ,

Por qué no funcionar correctamente:

La razón por la que incorrectamente es la función MAX(). Cuando elige Segmentación de datos "A", el resultado de la tabla Vendedor filtrada por la segmentación de datos es una fila {"A"} (como se indica a continuación), y también el resultado de ALLSELECTED(SellerList[Seller]).

vchenwuzmsft_0-1643252609768.png

Pero para la primera fila de Matrix visual, Apple, tiene filas de remolque en su contexto de filtro.

vchenwuzmsft_1-1643252822922.png

Esto contribuye a que el resultado de max(Fruits[Seller]) es "C", por lo que "C" no está en {"A"}. resultado de si es 0.

Solución alternativa:

Podemos probar otro algoritmo para implementar la recuperación de si la fruta existe en la tabla de opciones de la lista de rebanadas. Pruebe el código a continuación.

IsSeller =
VAR _fruit =
    COUNTROWS( VALUES( Fruits[Seller] ) )
VAR _except =
    COUNTROWS(
        EXCEPT( VALUES( Fruits[Seller] ), ALLSELECTED( SellerList[Seller] ) )
    )
VAR _r = _fruit - _except
RETURN
    IF( _r > 0, 1, 0 )

resultado:

vchenwuzmsft_2-1643256930473.png

Pbix al final puedes referirte.

Saludos

Equipo de apoyo a la comunidad _ chenwu zhu

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

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

@learner4eva ,

Por qué no funcionar correctamente:

La razón por la que incorrectamente es la función MAX(). Cuando elige Segmentación de datos "A", el resultado de la tabla Vendedor filtrada por la segmentación de datos es una fila {"A"} (como se indica a continuación), y también el resultado de ALLSELECTED(SellerList[Seller]).

vchenwuzmsft_0-1643252609768.png

Pero para la primera fila de Matrix visual, Apple, tiene filas de remolque en su contexto de filtro.

vchenwuzmsft_1-1643252822922.png

Esto contribuye a que el resultado de max(Fruits[Seller]) es "C", por lo que "C" no está en {"A"}. resultado de si es 0.

Solución alternativa:

Podemos probar otro algoritmo para implementar la recuperación de si la fruta existe en la tabla de opciones de la lista de rebanadas. Pruebe el código a continuación.

IsSeller =
VAR _fruit =
    COUNTROWS( VALUES( Fruits[Seller] ) )
VAR _except =
    COUNTROWS(
        EXCEPT( VALUES( Fruits[Seller] ), ALLSELECTED( SellerList[Seller] ) )
    )
VAR _r = _fruit - _except
RETURN
    IF( _r > 0, 1, 0 )

resultado:

vchenwuzmsft_2-1643256930473.png

Pbix al final puedes referirte.

Saludos

Equipo de apoyo a la comunidad _ chenwu zhu

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

Syndicate_Admin
Administrator
Administrator

@learner4eva ,

Cree una medida con el siguiente código:

isSeller = 
var selected_value = VALUES(SellerList[Seller])
return IF(MAX(Fruits[Seller]) in selected_value,1,0)
isFruit = 
var selected_value = VALUES(FruitsList[Fruits])
return IF(max(Fruits[Fruits]) in selected_value ,1,0)

Salida:-

Samarth_18_0-1643011524557.png

Gracias

Samarth

Syndicate_Admin
Administrator
Administrator

¿@learner4eva

Asegúrese de que no haya ninguna relación entre sus nuevas tablas y la mesa principal.

Utilice Valores en lugar de RESUMIR.

FruitsList = VALORES ( Frutas[Frutas] )
SellerList = VALORES ( Frutas[Vendedor] )
entonces
IsFruit = IF(max(Fruits[Fruits]) en VALORES ( Fruits[Fruits] ),1,0)
IsSeller = IF(max(Fruits[Seller]) en VALORES ( Fruits[Seller] ),1,0)

Si esta publicación ayuda,considere aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Aprecia tus felicitaciones!!
LinkedIn:
www.linkedin.com/in/vahid-dm/


Hola, seguí las instrucciones, pero desafortunadamente no funciona

learner4eva_0-1643010678849.png

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.