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
SalHack
Employee
Employee

Valor diferenciado con agrupar por en varias columnas

Me gustaría crear dos columnas "Total Distribuidor" y "Fuente" basadas en los siguientes datos:

Aquí está la lógica y necesito ayuda para transformar esto en una columna o medida calculada.

"Distribuidor Total" Recuento diferenciado de "Distribuidor" que tienen "Estado" - "Activo" y agrupado por "Elemento".

"Souce" Si "Distribuidor Total" > 1 entonces "Múltiple", de lo contrario "Single"

ArtículoDistribuidorEstadoDistribuidor totalFuente
MangoRoyal FruitsActivo3Múltiples
MangoMercado de agricultoresActivo3Múltiples
MangoCostcoActivo3Múltiples
manzanaCostcoActivo1soltero
KiwiKrogerActivo2Múltiples
KiwiSams ClubActivo2Múltiples
UvasAmazonActivo1soltero
PapayaWalmartActivo1soltero
PapayaCostcoInactivo1soltero

¿Podrías ayudarte, por favor?

8 REPLIES 8
v-eachen-msft
Community Support
Community Support

Hola @SalHack ,

Después de mis pruebas, no pude encontrar una manera fácil de resolverlo.

Si tiene ocho segmentaciones de datos, debe crear una tabla de segmentación de datos con estas columnas. A continuación, utilice ISFILTERED() para juzgar si está seleccionado. Si es true, devuelva el valor seleccionado. Si es false, no lo agregue para filtrar.

Según mi DAX anterior, necesita anidar ocho declaraciones IF(). Esto requiere trabajo repetido, buscar mejores soluciones de otros usuarios.

Community Support Team _ Eads
If this post helps, then please consider Accept it as the solution to help the other members find it.

De acuerdo. Esto puede funcionar, pero es demasiado complejo. ¿Alguien sabría si hay una manera fácil de abordar esto?

amitchandak
Super User
Super User

@SalHack , Pruebe una nueva columna como

nuevas Columnas ?

calculate(distinctcount(Table[Distributor]), filter(Table, table[Item] á earlier(table[Item]) && Table[Status] ?"Active"))

nuevas Columnas ?

if(calculate(distinctcount(Table[Distributor]), filter(Table, table[Item] á earlier(table[Item]) && Table[Status] ?"Active")) >1,"Multiple","Single")

Gracias. La fórmula que compartió a continuación funciona bien cuando no tengo ningún filtro aplicado en los datos. Sin embargo, tengo varios filtros aplicados y necesito reflejar el cálculo basado en lo que se selecciona y es visible en la pantalla. ¿Podría aconsejar cómo hacerlo?

Hola @SalHack ,

Debe crear medidas para obtener valores dinámicos.

Para ser independiente con la tabla original, debe crear una tabla de segmentación de datos en primer lugar (sin relación).

Slicer =
SELECTCOLUMNS (
    'Table',
    "Item", 'Table'[Item],
    "Distributor", 'Table'[Distributor]
)

A continuación, consulte las siguientes medidas para obtener"Distribuidor total"y "Fuente".

Total Distributor =
VAR a1 =
    FILTER (
        'Table',
        'Table'[Item] = SELECTEDVALUE ( 'Slicer'[Item] )
            && 'Table'[Distributor] = SELECTEDVALUE ( 'Slicer'[Distributor] )
    )
VAR a2 =
    FILTER ( 'Table', 'Table'[Item] = SELECTEDVALUE ( 'Slicer'[Item] ) )
VAR a3 =
    FILTER (
        'Table',
        'Table'[Distributor] = SELECTEDVALUE ( 'Slicer'[Distributor] )
    )
VAR b =
    FILTER ( ALLEXCEPT ( 'Table', 'Table'[Item] ), 'Table'[Status] = "Active" )
RETURN
    IF (
        ISFILTERED ( 'Slicer'[Distributor] ) && ISFILTERED ( 'Slicer'[Item] ),
        CALCULATE ( CALCULATE ( COUNTA ( 'Table'[Item] ), a1 ), b ),
        IF (
            ISFILTERED ( 'Slicer'[Distributor] )
                && ( ISFILTERED ( 'Slicer'[Item] ) = FALSE () ),
            CALCULATE ( CALCULATE ( COUNTA ( 'Table'[Item] ), a3 ), b ),
            IF (
                ISFILTERED ( 'Slicer'[Item] )
                    && ( ISFILTERED ( 'Slicer'[Distributor] ) = FALSE () ),
                CALCULATE ( CALCULATE ( COUNTA ( 'Table'[Item] ), b ), a2 ),
                CALCULATE ( COUNTA ( 'Table'[Item] ), b )
            )
        )
    )
Souce =
IF (
    [Total Distributor] > 1,
    "Multiple",
    IF ( [Total Distributor] = 1, "Single" )
)

Aquí está mi archivo de prueba para su referencia.

Community Support Team _ Eads
If this post helps, then please consider Accept it as the solution to help the other members find it.

Gracias Eads. Un par de cosas:

1. El artículo no es parte de la cortadora

2. Tengo otras columnas como segmentación que no se enumeran en los datos de muestra a continuación.

Sobre la base de los cambios anteriores, ¿funcionaría el siguiente script?

así que tengo las siguientes rebanadoras:

Artículo 1

Tema 2

Distribuidor

Artículo 3

Artículo 4

Tema 5

Artículo 6

Tema7

Elemento forma parte de la vista de tabla que tiene varias columnas.

¿Podría ayudar por favor

ryan_mayu
Super User
Super User

@SalHack,

Puede crear dos columnas.

Total Distributor = COUNTX(FILTER('Sheet7',Sheet7[Item]=EARLIER(Sheet7[Item])&&Sheet7[Status]="Active"),Sheet7[Item])
source = if(Sheet7[Total Distributor]>1, "multiple","single")

11111.PNG





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




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.