Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
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.
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
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
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] ) )
En la columna virtual @maxcat, intente cambiar ALL() a ALLSELECTED(). Por favor, avísame si eso funciona.
saludos
palmadita
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
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
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
@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
Usuario | Idcategoría | MaxCategory |
A | 1 | 4 |
A | 2 | 4 |
B | 2 | 4 |
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
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
@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
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
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]) ) ) ) ) ) ) )
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
Id | Día No |
1 | 1 día |
2 | 2 días |
3 | 3 días |
4 | 4 días |
5 | 5 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] )
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
To learn more about Power BI, follow me on Twitter or subscribe on YouTube.
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' ->
Gracias por su ayuda!!