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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
sbonilla0809
Frequent Visitor

'IF and ONLY IF'/ Segmentación condicional

Hola estoy tratando de averiguar cómo hacer un tipo de "si y sólo si" de cortador. No puedo compartir los datos con los que estoy trabajando, pero para los fines de mi problema pretenderemos que un cliente puede comprar manzanas, naranjas y plátanos. ¿Cómo puedo crear una columna/medida para usarla como segmentación de datos para mostrarme a los clientes que solo han comprado Apples o [Caso 2] SOLO Manzanas y Naranjas? Cuando filtre digamos Bananas me mostrará los clientes que han comprado manzanas y naranjas [incluyendo aquellos que compraron plátanos también] a pesar de que la cantidad de plátanos no se está mostrando.

La estructura Data solo tiene una tabla con columnas: order_id ( pk), customer_id, fruta, purchase_date y otros campos

La tabla que tengo en mi visualización tiene este aspecto:

QTY es una medida : s count(orderid)

Customerid Fruit QTY

Una manzana 1

Naranjas 2

B Apple 3

Banana 2

C Plátano 2

Naranjas 1

Apple 1

D Apple 4

Y Banana 3

F Apple 1

Naranjas 2

G Naranjas 3

* Marcado con colores los clientes que deben mantenerse al aplicar los filtros en cada 'Caso'

Además, ¿cómo puedo contar los clientes que se filtran ( 1 en el caso 1 , 2 en el caso 2 )

Gracias 🙂

6 REPLIES 6
v-gizhi-msft
Community Support
Community Support

Hola

Por favor, intente crear primero una tabla de corte separada:

150.PNG

A continuación, pruebe esta medida:

Measure = 
VAR CustomerIDCountRows =
    CALCULATE (
        COUNT ( 'Table'[CustomerID] ),
        FILTER (
            ALL ( 'Table' ),
            'Table'[CustomerID] IN FILTERS ( 'Table'[CustomerID] )
        )
    )
RETURN
    SWITCH (
        SELECTEDVALUE ( 'Slicer Table'[SlicerValue] ),
        "Case 1", IF ( MAX ( 'Table'[Fruit] ) = "Apple" && CustomerIDCountRows = 1, 1, 0 ),
        "Case 2", IF (
            (
                MAX ( 'Table'[Fruit] ) = "Apple"
                    || MAX ( 'Table'[Fruit] ) = "Oranges"
            )
                && CustomerIDCountRows = 2,
            1,
            0
        )
    )

Cuando se selecciona un valor en la segmentación de datos, el resultado muestra:

151.PNG152.PNG

Aquí está mi archivo pbix de prueba:

pbix

Espero que esto ayude.

Saludos

Giotto

amitchandak
Super User
Super User

Crear medidas como estas

Customer wise ST =calculate(sum(Table[QTY]),allexcpet(Table[Customerid]))     
Only Apple = calculate(sum(Table[QTY]),allexcpet(Table[Customerid]),Table[Fruit]="Apple")
Only Orange = calculate(sum(Table[QTY]),allexcpet(Table[Customerid]),Table[Fruit]="Apple")
     
Apple CT =sumx(filter(summarize(Table,Table[Customerid],"_GT",[Customer wise ST],"_app",[Only Apple]),[_GT]=[_app]),[_app])

Orange CT =sumx(filter(summarize(Table,Table[Customerid],"_GT",[Customer wise ST],"_app",[Only Orange]),[_GT]=[_app]),[_app])

Usa los últimos 2 en una cortadora como https://community.powerbi.com/t5/Desktop/Slicer-MTD-QTD-YTD-to-filter-dates-using-the-slicer/td-p/50...

hi @amitchandak ,

¿Qué pasa si quiero utilizar la "fruta" como una cortadora de selección múltiple para ver múltiples combinaciones : SOLO manzanas o SOLO manzanas y plátanos, SOLO manzanas y naranjas y así sucesivamente. La idea es ver qué clientes compran sólo ese tipo de productos.

Muchas gracias por todo lo 🙂

No pude subir el documento pbix, pero estos son los datos que tengo:

OrderidCustomeridFruta
1Amanzana
2ANaranja
3ANaranja
4Bmanzana
5Bmanzana
6Bmanzana
7BPlátano
8BPlátano
9Cmanzana
10CPlátano
11CPlátano
12CNaranja
13Dmanzana
14Dmanzana
15Dmanzana
16Dmanzana
17EPlátano
18EPlátano
19EPlátano
20Fmanzana
21FNaranja
22FNaranja
23GNaranja
24GNaranja
25GNaranja

Espero que esto sea más útil !

Gracias de antemano 🙂

Hola

Si mi respuesta ha resuelto su problema, por favor márquelo como una solución para que otros lo vean.
¡Gracias!

Saludos

Giotto

Hola

Intente crear primero una tabla de segmentación de datos:

SlicerTable = DISTINCT(SELECTCOLUMNS('Table',"Fruit",'Table'[Fruit]))

A continuación, pruebe esta medida:

check = 
VAR t =
    CALCULATETABLE (
        DISTINCT ( 'Table'[Fruit] ),
        FILTER (
            ALLSELECTED ( 'Table' ),
            'Table'[Customerid] IN DISTINCT ( 'Table'[Customerid] )
        )
    )
RETURN
    IF (
        CALCULATE (
            DISTINCTCOUNT ( 'SlicerTable'[Fruit] ),
            FILTER ( 'SlicerTable', 'SlicerTable'[Fruit] IN t )
        )
            = DISTINCTCOUNT ( 'SlicerTable'[Fruit] )
            && COUNTROWS ( t ) = DISTINCTCOUNT ( 'SlicerTable'[Fruit] ),
        1,
        0
    )

Aplique esta medida al objeto visual de la tabla estableciendo [check]-1, cuando seleccione uno o más de un valor en la cortadora de frutas, el resultado muestra:

1.PNG2.PNG3.PNG

Aquí está mi archivo pbix de prueba:

pbix

Saludos

Giotto

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

AugPowerBI_Carousel

Power BI Monthly Update - August 2024

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

August Carousel

Fabric Community Update - August 2024

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

Top Solution Authors
Top Kudoed Authors