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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
Syndicate_Admin
Administrator
Administrator

Calcular horarios y días hábiles

¡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ónPaso 1 (Inicio)Paso 2Paso 3Paso 4 (Fin)
110/08/2021 10:47:3210/08/2021 16:03:3014/08/2021 12:12:0815/08/2021 17:54:02
221/09/2021 12:30:4122/09/2021 11:02:5622/09/2021 12:56:0130/09/2021 11:05:34
301/10/2021 18:01:0103/10/2021 17:03:3104/10/2021 08:57:0104/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.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

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

vyingjl_0-1633572404502.png

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.

View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

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.

Total de días hábiles =
Tiempo total del VAR =
FIJO ( BusTime[Paso 4 (Fin)] - BusTime[Paso 1 (Inicio)], 6 )
Noches de VAR =
INT ( BusTime[Paso 4 (Fin)] - BusTime[Paso 1 (Inicio)] )
Resultado VAR = tiempo total - noches * 16 / 24
DEVOLUCIÓN
RONDA ( resultado, 5 )
Palmadita
Syndicate_Admin
Administrator
Administrator

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

vyingjl_0-1633572404502.png

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.

Syndicate_Admin
Administrator
Administrator

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.

https://youtu.be/3Gy8uu3zmNI

https://youtu.be/v4DS9vHVgLE

Palmadita

Helpful resources

Announcements
Fabcon_Europe_Social_Bogo

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

Power BI Carousel June 2024

Power BI Monthly Update - June 2024

Check out the June 2024 Power BI update to learn about new features.

PBI_Carousel_NL_June

Fabric Community Update - June 2024

Get the latest Fabric updates from Build 2024, key Skills Challenge voucher deadlines, top blogs, forum posts, and product ideas.

RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

Top Solution Authors
Top Kudoed Authors