Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
¡Hola!
Tengo algunos datos con hora/fecha divididos en pasos de un proceso. Necesito calcular el horario comercial (formato de 8 a 18, 24h) y los días entre cada paso para saber cuánto tiempo tarda cada paso en completarse.
Ejemplo (dd/mm/aaaa hh:mm:ss):
Identificación | Paso 1 (Inicio) | Paso 2 | Paso 3 | Paso 4 (Fin) |
1 | 10/08/2021 10:47:32 | 10/08/2021 16:03:30 | 14/08/2021 12:12:08 | 15/08/2021 17:54:02 |
2 | 21/09/2021 12:30:41 | 22/09/2021 11:02:56 | 22/09/2021 12:56:01 | 30/09/2021 11:05:34 |
3 | 01/10/2021 18:01:01 | 03/10/2021 17:03:31 | 04/10/2021 08:57:01 | 04/10/2021 10:14:31 |
He intentado encontrar posts de personas con el mismo problema de mí mismo, y aunque he encontrado algunas respuestas interesantes como esta, esta,y esta, la que se cerró a resolver mi problema (sin calcular los días hábiles todavía) es la que se muestra en esta web.
El problema es que necesito replicar esto no solo una vez, sino para cada paso del proceso (a menos que haya otra forma que desconozco). Así que necesito ayuda para encontrar una manera de calcular esto sin tener mi power bi cargado con columnas que tardan mucho tiempo en procesarse. Espero que puedan ayudarme, ¡gracias de antemano!
Saludos.
Solved! Go to Solution.
Hay @giullianoc ,
Puede crear medidas y usar variables para almacenar cada paso de tiempo y cotizarlos cuando sea necesario. Para calcular el timediff, la medida podría ser así:
TimeDiff =
VAR s1 =
SELECTEDVALUE ( 'Table'[Step 1 (Start)] )
VAR s2 =
SELECTEDVALUE ( 'Table'[Step 2] )
VAR s3 =
SELECTEDVALUE ( 'Table'[Step 3] )
VAR s4 =
SELECTEDVALUE ( 'Table'[Step 4 (End)] )
VAR s2_1_total_second =
DATEDIFF ( s1, s2, SECOND )
VAR s2_1_total_day =
ROUNDDOWN ( s2_1_total_second / 3600 / 24, 0 )
VAR s2_1_hour =
ROUNDDOWN ( ( s2_1_total_second - s2_1_total_day * 24 * 3600 ) / 3600, 0 )
VAR s2_1_minute =
ROUNDDOWN (
( s2_1_total_second - s2_1_total_day * 24 * 3600 - s2_1_hour * 3600 ) / 60,
0
)
VAR s2_1_second =
ROUNDDOWN (
( s2_1_total_second - s2_1_total_day * 24 * 3600 - s2_1_hour * 3600 - s2_1_minute * 60 ),
0
)
VAR s2_1_time = s2_1_total_day & " day(s) " & s2_1_hour & ":" & s2_1_minute & ":" & s2_1_second
VAR s3_2_total_second =
DATEDIFF ( s2, s3, SECOND )
VAR s3_2_total_day =
ROUNDDOWN ( s3_2_total_second / 3600 / 24, 0 )
VAR s3_2_hour =
ROUNDDOWN ( ( s3_2_total_second - s3_2_total_day * 24 * 3600 ) / 3600, 0 )
VAR s3_2_minute =
ROUNDDOWN (
( s3_2_total_second - s3_2_total_day * 24 * 3600 - s3_2_hour * 3600 ) / 60,
0
)
VAR s3_2_second =
ROUNDDOWN (
( s3_2_total_second - s3_2_total_day * 24 * 3600 - s3_2_hour * 3600 - s3_2_minute * 60 ),
0
)
VAR s3_2_time = s3_2_total_day & " day(s) " & s3_2_hour & ":" & s3_2_minute & ":" & s3_2_second
VAR s4_3_total_second =
DATEDIFF ( s3, s4, SECOND )
VAR s4_3_total_day =
ROUNDDOWN ( s4_3_total_second / 3600 / 24, 0 )
VAR s4_3_hour =
ROUNDDOWN ( ( s4_3_total_second - s4_3_total_day * 24 * 3600 ) / 3600, 0 )
VAR s4_3_minute =
ROUNDDOWN (
( s4_3_total_second - s4_3_total_day * 24 * 3600 - s4_3_hour * 3600 ) / 60,
0
)
VAR s4_3_second =
ROUNDDOWN (
( s4_3_total_second - s4_3_total_day * 24 * 3600 - s4_3_hour * 3600 - s4_3_minute * 60 ),
0
)
VAR s4_3_time = s4_3_total_day & " day(s) " & s4_3_hour & ":" & s4_3_minute & ":" & s4_3_second
RETURN
s4_3_time
Saludos
Equipo de apoyo a la comunidad _ Yingjie Li
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Debe despivot sus datos y dividir sus columnas DateTime en columnas Date y Time, y hacer esto como una medida. Sin embargo, con los datos estructuados como se muestra, puede agregar una columna calculada con esta expresión como ejemplo de cómo abordar esto. Calcula el tiempo total (en días como decimal) entre el paso 1 y 4 y luego resta 16 horas para el número de días que abarca. Tenga en cuenta que su Paso 4 en la primera fila termina después de las 16:00 hrs, por lo que no está seguro de si contaría el tiempo completo ese día o se detendría a las 4 PM. Reemplace BusTime por el nombre real de la tabla.
Hay @giullianoc ,
Puede crear medidas y usar variables para almacenar cada paso de tiempo y cotizarlos cuando sea necesario. Para calcular el timediff, la medida podría ser así:
TimeDiff =
VAR s1 =
SELECTEDVALUE ( 'Table'[Step 1 (Start)] )
VAR s2 =
SELECTEDVALUE ( 'Table'[Step 2] )
VAR s3 =
SELECTEDVALUE ( 'Table'[Step 3] )
VAR s4 =
SELECTEDVALUE ( 'Table'[Step 4 (End)] )
VAR s2_1_total_second =
DATEDIFF ( s1, s2, SECOND )
VAR s2_1_total_day =
ROUNDDOWN ( s2_1_total_second / 3600 / 24, 0 )
VAR s2_1_hour =
ROUNDDOWN ( ( s2_1_total_second - s2_1_total_day * 24 * 3600 ) / 3600, 0 )
VAR s2_1_minute =
ROUNDDOWN (
( s2_1_total_second - s2_1_total_day * 24 * 3600 - s2_1_hour * 3600 ) / 60,
0
)
VAR s2_1_second =
ROUNDDOWN (
( s2_1_total_second - s2_1_total_day * 24 * 3600 - s2_1_hour * 3600 - s2_1_minute * 60 ),
0
)
VAR s2_1_time = s2_1_total_day & " day(s) " & s2_1_hour & ":" & s2_1_minute & ":" & s2_1_second
VAR s3_2_total_second =
DATEDIFF ( s2, s3, SECOND )
VAR s3_2_total_day =
ROUNDDOWN ( s3_2_total_second / 3600 / 24, 0 )
VAR s3_2_hour =
ROUNDDOWN ( ( s3_2_total_second - s3_2_total_day * 24 * 3600 ) / 3600, 0 )
VAR s3_2_minute =
ROUNDDOWN (
( s3_2_total_second - s3_2_total_day * 24 * 3600 - s3_2_hour * 3600 ) / 60,
0
)
VAR s3_2_second =
ROUNDDOWN (
( s3_2_total_second - s3_2_total_day * 24 * 3600 - s3_2_hour * 3600 - s3_2_minute * 60 ),
0
)
VAR s3_2_time = s3_2_total_day & " day(s) " & s3_2_hour & ":" & s3_2_minute & ":" & s3_2_second
VAR s4_3_total_second =
DATEDIFF ( s3, s4, SECOND )
VAR s4_3_total_day =
ROUNDDOWN ( s4_3_total_second / 3600 / 24, 0 )
VAR s4_3_hour =
ROUNDDOWN ( ( s4_3_total_second - s4_3_total_day * 24 * 3600 ) / 3600, 0 )
VAR s4_3_minute =
ROUNDDOWN (
( s4_3_total_second - s4_3_total_day * 24 * 3600 - s4_3_hour * 3600 ) / 60,
0
)
VAR s4_3_second =
ROUNDDOWN (
( s4_3_total_second - s4_3_total_day * 24 * 3600 - s4_3_hour * 3600 - s4_3_minute * 60 ),
0
)
VAR s4_3_time = s4_3_total_day & " day(s) " & s4_3_hour & ":" & s4_3_minute & ":" & s4_3_second
RETURN
s4_3_time
Saludos
Equipo de apoyo a la comunidad _ Yingjie Li
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Vea estos videos sobre cómo modelar el tiempo y luego calcule una duración total fácilmente. Debe considerar hacer un unpivot de sus datos para simplificar su análisis.
Palmadita
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
6 | |
2 | |
2 | |
1 | |
1 |