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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Anonymous
Not applicable

Problema de recuentos duplicados

Estoy tratando de obtener recuentos únicos durante el período seleccionado. Un usuario podría tener varias categorías (1 por día) y, en ese caso, me gustaría que el usuario se asociase a una sola categoría.

Por ejemplo, en la imagen siguiente, el usuario "SL-AE01" y "SL-08" tienen 2 categorías distintas y se cuenta dos veces en el total. En tal caso, me gustaría que se contara para el total de la categoría "2".

La imagen 2 muestra la salida esperada


Se adjunta un archivo power bi con datos de muestra.

vdr_0-1593209422767.png

vdr_1-1593210063777.png

Ejemplo De Data.pbix

13 REPLIES 13
mahoneypat
Employee
Employee

Aquí hay una manera de hacerlo:

NewMeasure =
VAR __summarytable =
    ADDCOLUMNS (
        SUMMARIZE ( Test, Test[User], Test[CategoryId] ),
        "@maxcat", CALCULATE ( MAX ( Test[CategoryId] ), ALL ( Test[CategoryId] ) )
    )
RETURN
    COUNTROWS ( FILTER ( __summarytable, Test[CategoryId] = [@maxcat] ) )

Si esto funciona para usted, márquelo como la solución. Los elogios también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

Gracias @mahoneypat Funciona pero cuando utilizo el nombre de la categoría como columnas, en otra tabla con relación 1 --> * (prueba) , muestra datos incorrectos (img 2 de mi OP)

Además, tengo que aplicar filtros antes de resumir los datos. para excluir los datos de fin de semana (de la tabla de fechas) y otros identificadores de categoría (3,4) de estos recuentos.

Por lo tanto, cambié la consulta un poco, pero no parece funcionar, ¿podría pls echar un vistazo y ayudar.

Gracias

NewMeasure 1 = 

VAR CombinedTable =  CALCULATETABLE( Test, FILTER(Dates, Dates[Day Name] <> "Sat" ))

VAR __summarytable =
    ADDCOLUMNS (
        SUMMARIZE ( CombinedTable, Test[User], Test[CategoryId] ),
        "@maxcat", CALCULATE ( MAX ( Test[CategoryId] ), ALL ( Test[CategoryId] ) )
    )
RETURN
    COUNTROWS ( FILTER ( __summarytable, Test[CategoryId] = [@maxcat] ) )

vdr_0-1593473570234.png




En la columna virtual @maxcat, intente cambiar ALL() a ALLSELECTED(). Por favor, avísame si eso funciona.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

Eso no ayudó.. Tengo PBI adjunto con datos de muestra en mi OP, si quieres echar un vistazo

Pruebe esta expresión para permitirle usar la columna Nombre de categoría en la matriz.

NewMeasure =
VAR CombinedTable =
    CALCULATETABLE ( Test, FILTER ( Dates, Dates[Day Name] <> "Sat" ) )
VAR __summarytable =
    ADDCOLUMNS (
        SUMMARIZE ( CombinedTable, Test[User], WorkCategory[Id] ),
        "@maxcat", CALCULATE (
            MAX ( Test[CategoryId] ),
            ALL ( Test[CategoryId] ),
            ALL ( WorkCategory )
        )
    )
RETURN
    COUNTROWS ( FILTER ( __summarytable, WorkCategory[Id] = [@maxcat] ) )

Si esto funciona para usted, márquelo como la solución. Los elogios también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

@mahoneypat - acabo de notar al verificar los recuentos que en caso de que haya un usuario con id de categoría - 2 y 4, entonces está excluyendo a esos usuarios del recuento, porque el filtro en la tabla de variables está filtrando en el identificador de categoría - (1,2), mientras que el máximo devuelve 4

UsuarioIdcategoríaMaxCategory
A14
A24
B24

He descubierto la solución para contar a los usuarios en ningún día. Mientras verifica los recuentos de ambas medidas, me encontré con este problema. Ayuda de Pls

Ahora que tengo una mejor comprensión de su objetivo, esta es la medida que probablemente habría escrito primero. Parece obtener los resultados correctos en su muestra pbix. Agregué comentarios para explicar cómo funciona.

Count in Category = 
VAR __thiscategory =
    MAX ( Test[CategoryId] ) //Store the CategoryId in context of the visual as a variable. MAX to avoid result of 1 in Totals.
VAR __summary =
    CALCULATETABLE (
        ADDCOLUMNS (
            VALUES ( Test[User] ), //get list of users in the current context
            "@NotFacility", CALCULATE ( //count how many days this user was not at a Facility in the current context
                COUNTROWS ( Test ),
                ALL ( Test[CategoryId] ), //removes teh filter from the CategoryId
                ALL ( WorkCategory ), //removes the filter from Category Name
                Test[CategoryId] <> 1
            ) + 0
        ),
        Dates[Day Name] <> "Sat" //Make the table above excluding Saturdays
    )
RETURN
    IF (
        __thiscategory = 1, //do different calculation based on if Facility or not facility in the visual
        COUNTROWS ( FILTER ( __summary, [@NotFacility] = 0 ) ), //exclude rows where user worked somewhere other than a facility too
        COUNTROWS ( __summary ) //count all rows for non-facility categories
    )

Si esto funciona para usted, márquelo como la solución. Los elogios también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

@mahoneypat - ¡Gracias! Resuelve el problema con los recuentos, pero no puedo aplicar filtros adicionales. No incluí todo el filtro utilizado anteriormente que estaba tratando de usar en la medida. He añadido tablas y datos adicionales al archivo pbix.

Hice los siguientes cambios en la medida compartida originalmente. El filtro de fecha se aplica de manera diferente para cada país debido al horario de trabajo

NewMeasure 1 = 

VAR CombinedTable =  CALCULATETABLE( Test, 
                                        FILTER
                                             (
                                                Test, 
                                                Test[CategoryId] IN {1,2}
                                                &&
                                                IF (
                                                        LEFT ( Test[County ID], 1)  = RELATED('Country - WorkDays'[CountryCode]),
                                                        RELATED(Dates[IsWeekend MEA]) = FALSE (),
                                                        RELATED(Dates[IsWeekend ROW]) = FALSE ()
                                                     )       
                                                 )
                                    )         

VAR __summarytable =
    ADDCOLUMNS (
        SUMMARIZE ( CombinedTable, Test[User], Test[CategoryId] ),
        "@maxcat", CALCULATE ( MAX ( Test[CategoryId] ), ALL ( Test[CategoryId] ), ALL(WorkCategory) )
    )
RETURN
    COUNTROWS ( FILTER ( __summarytable, Test[CategoryId] = [@maxcat] ) )

Agradecemos su ayuda y muchas gracias por tomarse el tiempo para agregar los comentarios, muy útil para entender


Datos de telemuestra v1.pbix

Me alegra que lo hayas resuelto. Por favor marque como solución. Kudos apreciado también.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

Me perdí tu respuesta. Lo sentimos, si no estaba claro, pero todavía no tengo la solución completa. El método reciente que compartió resuelve el problema con los recuentos, pero no puedo usar los filtros (como a continuación) en la expresión de tabla de cálculo. ¿Podrías ayudarte

Necesito usar un filtro, similar a esto, para excluir los fines de semana para los países en función de sus días laborables

VAR CombinedTable á  CALCULATETABLE( Test, 
                                        FILTER
                                             (
                                                Test, 
                                                Test[CategoryId] IN ?1,2'
                                                &&
                                                IF ( IZQUIERDA (
                                                        Test[County ID], 1)  ? RELATED('Country - WorkDays'[CountryCode]),
                                                        RELATED(Dates[IsWeekend MEA]) ? FALSE (),
                                                        RELATED(Dates[IsWeekend ROW]) )
                                                     ) ) ) ) )
                                    )     


Anonymous
Not applicable

Gracias @mahoneypat . Eso funciona perfectamente

Tengo otra pregunta relacionada, me gustaría obtener el recuento de usuarios agrupados por No of Days At Facility. En general, los datos se agrupan por una semana o un mes (a continuación del gráfico).
Modifiqué la consulta ("Recuento de días de la facilidad") que compartió y funciona perfectamente, la tabla muestra los datos correctamente, pero necesito usar esto en un gráfico. Por lo tanto, creé una tabla desconectada con los siguientes datos y usé las siguientes medidas, "Recuento de días de facilidad" - para contar los días y "En la instalación - Días" para la búsqueda y agruparlos, pero esto no me está dando la salida esperada

IdDía No
11 día
22 días
33 días
44 días
55 días

Facility Day Count = 
VAR CombinedTable =  CALCULATETABLE( Test, FILTER(Dates, Dates[Day Name] <> "Sat" ))
VAR __summarytable =
    ADDCOLUMNS (
        SUMMARIZE ( CombinedTable, Test[User], Test[CategoryId] ),
        "@maxcat", CALCULATE ( COUNT ( Test[CategoryId] ) )
    )
RETURN
    MAXX(__summarytable, [@maxcat])
At Facility - Days = 

VAR UserAtFacilityCounts =
    SUMMARIZE (
        'Test',
        'Test'[User],
        "DayCount", CALCULATE (
                                IF ( [Facility Day Count]                
                                            = MAX ( 'Day Number'[ID] ),
                                    1, 0
            )
        )
    )
RETURN
    sumx( UserAtFacilityCounts, [DayCount] )

2020-06-30_1-16-28.png

Esta segunda pregunta podría haber sido otro post. En cualquier caso, ¿está seguro de que su medida de recuento de días de instalaciones es correcta? Parece que devolverá el número máximo de días si alguien trabaja en la instalación o en casa. Si usted está buscando una medida para contar el número de personas que trabajaron un determinado número de días cada período (semana), la medida probablemente se puede simplificar. ¿Puede explicar por qué si alguien trabaja en El hogar y la instalación en una semana determinada, desea la identificación de categoría máxima (en cuyo caso Home es mayor que La instalación)?

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

Facility Day Count = 
VAR CombinedTable =  CALCULATETABLE( Test, FILTER(Dates, Dates[Day Name] <> "Sat" ), FILTER(Test, 'Test'[CategoryId] = 2))
VAR __summarytable =
    ADDCOLUMNS (
        SUMMARIZE ( CombinedTable, Test[User], Test[CategoryId] ),
        "@maxcat", CALCULATE ( COUNT ( Test[CategoryId] ) )
    )
RETURN
    MAXX(__summarytable, [@maxcat])

Lo sentimos, le faltaba un filtro adicional. Sólo me interesan los recuentos de usuarios en las instalaciones. Debido a estos escenarios recientes, el usuario tiene la opción de ir a la instalación o wfh, pero para un día dado con otros criterios, elegimos 1, también hay otras categorías

Soy un novato y espero que mi comprensión de la medida sea correcta - Var CombinedTable -> Filtra la tabla, Resumen de Var -> obtener los recuentos por usuario, de la tabla filtrada. Finalmente Maxx devuelve el valor de recuento maxx para cada usuario. En este caso porque sólo deberíamos tener 1 recuento por usuario, usando cualquier agregado - MINX, MAXX debe devolver el mismo derecho? Por favor, corrígeme, si me equivoco aquí


Por lo tanto, si el Usuario 'A' y el Usuario 'B' trabajan en la instalación 3 días, Usuario 'C' - 1 día y usuario 'D' - 4 días (en la misma semana) entonces nos gustaría mostrar los recuentos como '1-Día' -> 1 , '2-Día' -> 0, '3-Día' -> 2, '4-Día' -> 1, '5-Día' ->

Capture.JPG

Gracias por su ayuda!!

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors