March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
Hola. Estoy teniendo algunos problemas para encontrar una solución al siguiente problema. Agradezco su ayuda y sugerencias.
Tengo una tabla de eventos con 3 columnas como la siguiente
Quiero poder seleccionar un intervalo de tiempo y resumir el número de horas por clase de evento dentro del intervalo seleccionado.
Hora de comienzo | Hora de finalización | Clase de evento |
3/4/2021 20:00 | 3/6/2021 1:00 | Clase A |
3/5/2021 16:00 | 3/6/2021 4:00 | Clase B |
3/6/2021 20:00 | 3/7/2021 3:00 | Clase A |
6/3/2021 2:30 | 6/3/2021 14:30 | Clase C |
6/23/2021 14:10 | 6/24/2021 2:10 | Clase B |
1/16/2021 10:30 | 1/16/2021 18:45 | Clase D |
3/5/2021 21:00 | 3/8/2021 9:00 | Clase A |
5/21/2021 20:00 | 5/22/2021 4:15 | Clase C |
3/5/2021 13:00 | 3/6/2021 13:00 | Clase C |
Intervalo seleccionado
3/5/2021 0:00 | 3/7/2021 0:00 |
Resultados previstos
Clase de evento | Total de horas |
Clase A | 56.0 |
Clase B | 12.0 |
Clase C | 36.0 |
Clase D | 0 |
Cosas a tener en cuenta:
Realmente no he podido establecer las relaciones de horario o las medidas para obtener los resultados.
Agradezco su ayuda.
Solved! Go to Solution.
No @andrezmor,
En primer lugar, cree que está contando 12 horas adicionales en la Clase C de acuerdo con sus datos, los valores de C se tienen en consecuencia:
Hora de comienzo |
Hora de finalización |
Clase de evento |
6/3/2021 2:30 |
6/3/2021 14:30 |
Clase C |
5/21/2021 20:00 |
5/22/2021 4:15 |
Clase C |
3/5/2021 13:00 |
3/6/2021 13:00 |
Clase C |
Si su filtro se basa en el 3/5 y 3/7 solo la tercera línea se considera hacerla las 24 horas y no 36, supongo que está contando también las primeras 12 horas desde la primera línea pero no coincide con el filtro.
Pruebe la siguiente medida:
Total Hours =
VAR temp_table =
FILTER (
SUMMARIZE (
ALL ( 'Table'[Event Class], 'Table'[Start Time], 'Table'[End Time] ),
'Table'[Event Class],
'Table'[Start Time],
'Table'[End Time],
"@HourDifference",
DATEDIFF (
MAX ( 'Table'[Start Time], MIN ( 'Calendar'[Date] ) ),
MIN ( 'Table'[End Time], MAX ( 'Calendar'[Date] ) ),
HOUR
)
),
[@HourDifference] > 0
&& 'Table'[Event Class] IN VALUES ( 'Table'[Event Class] )
)
RETURN
COALESCE ( SUMX ( temp_table, [@HourDifference] ), 0 )
Muchas gracias @MFelix, no pude ver el Hours_Total.pbix porque mi organización funciona con Power Bi Report Server y obtuve una versión de versiones incompatibles. Sin embargo, pude replicar la medida en mi modelo de datos y funcionó perfectamente. Muchas gracias por su ayuda.
No @andrezmor,
En primer lugar, cree que está contando 12 horas adicionales en la Clase C de acuerdo con sus datos, los valores de C se tienen en consecuencia:
Hora de comienzo |
Hora de finalización |
Clase de evento |
6/3/2021 2:30 |
6/3/2021 14:30 |
Clase C |
5/21/2021 20:00 |
5/22/2021 4:15 |
Clase C |
3/5/2021 13:00 |
3/6/2021 13:00 |
Clase C |
Si su filtro se basa en el 3/5 y 3/7 solo la tercera línea se considera hacerla las 24 horas y no 36, supongo que está contando también las primeras 12 horas desde la primera línea pero no coincide con el filtro.
Pruebe la siguiente medida:
Total Hours =
VAR temp_table =
FILTER (
SUMMARIZE (
ALL ( 'Table'[Event Class], 'Table'[Start Time], 'Table'[End Time] ),
'Table'[Event Class],
'Table'[Start Time],
'Table'[End Time],
"@HourDifference",
DATEDIFF (
MAX ( 'Table'[Start Time], MIN ( 'Calendar'[Date] ) ),
MIN ( 'Table'[End Time], MAX ( 'Calendar'[Date] ) ),
HOUR
)
),
[@HourDifference] > 0
&& 'Table'[Event Class] IN VALUES ( 'Table'[Event Class] )
)
RETURN
COALESCE ( SUMX ( temp_table, [@HourDifference] ), 0 )
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!