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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Asigne el turno a Día o Noche en función de las horas de inicio y finalización reales.

Hola

Tengo una lista de personal asignado y sus horas de inicio y finalización, pero estoy tratando de calcular si son 'día' o 'noche'. Los gerentes han logrado crear un montón de diferentes turnos personalizados y es muy difícil trabajar desde el tipo de turno.

Un turno se clasifica como noche si 'la mitad o más de la mitad del turno total se trabaja entre las 8pm y las 6am', de lo contrario es un turno de día.

He añadido algunos ejemplos a continuación. Me gustaría 'Shift' calculado a partir de las dos veces. ¿Se podría hacer en el editor de consultas?

Gracias

shift_typeTipoActual_Start_TimeActual_End_Time
NocheDía10:30:0015:30:00
NocheDía14:00:0022:00:00
NocheDía15:00:0023:00:00
NocheDía16:00:0020:00:00
NocheNoche16:00:0000:00:00
NocheDía17:00:0020:00:00
NocheNoche17:00:0023:00:00
NocheNoche18:00:0000:00:00
NocheNoche18:00:0002:00:00
NocheNoche19:00:0000:00:00
NocheNoche19:00:0000:00:00
NocheDía16:00:0022:00:00
NocheDía13:30:0020:00:00
NocheNoche21:15:0007:15:00
NocheNoche18:00:0000:00:00
NocheNoche18:00:0000:00:00
1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @scott3387 ,

eche un vistazo a la transformación de Power Query adjunta. (PBIX)

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

@scott3387

Esto es lo que se me ocurrió:


let
  Source = Table.FromRows(
    Json.Document(
      Binary.Decompress(
        Binary.FromText(
          "i45Wci1LzcvMS1fSUXJJrASShgZWxgZWBgYgpimUGauDRZ0JUAaizsgIysSqzhShzhifOjOEOgOs6vwy0zNKUFUaYFcJNdGcaBPNCbkRrtKCkN3YVGIPH7hKS6LNJKgSMyzxxo0xPK4JhJCRoRU4IkE2m0OZ1AwhuMpYAA==",
          BinaryEncoding.Base64
        ),
        Compression.Deflate
      )
    ),
    let
      _t = ((type nullable text) meta [Serialized.Text = true])
    in
      type table [shift_type = _t, Type = _t, Actual_Start_Time = _t, Actual_End_Time = _t]
  ),
  #"Changed Type" = Table.TransformColumnTypes(
    Source,
    {
      {"shift_type", type text},
      {"Type", type text},
      {"Actual_Start_Time", type time},
      {"Actual_End_Time", type time}
    }
  ),
  // Start of the expression to get the shift
  GetShift = Table.AddColumn(
    #"Changed Type",
    "Shift",
    each
      let
        endDuration =
          if Text.StartsWith(Text.From([Actual_End_Time] - [Actual_Start_Time]), "-") then
            (#duration(1, 0, 0, 0) + ([Actual_End_Time] - #time(0, 0, 0))) // if the difference between end_time and start_time is negative then add 1 day to end_time and return all as duration
          else
            [Actual_End_Time] - #time(0 , 0, 0), // para tener valores como duración
        startDuration á [Actual_Start_Time] - #time(0, 0, 0), // transformar start_time a
        la duración_Diferencia - endDuration - startDuration, // obtener diferencia entre start_time y end_time como duración
        nightTime -
          si endDuration < #duration(0, 20, 0, 0) y luego
            #duration(0, 0, 0, 0) // si endDuration es menor que 20:00 y luego devuelve la duración de cero
          else
            (si endDuration > #duration(1, 6, 0, 0) a continuación, #duration(1, 6, 0, 0) else endDuration) // evalúa si endDuration es mayor que 06:00 y si true devuelve la duración como 06:00 el otro día
              - #duration(0, 20, 0, 0) // entonces obtener la diferencia entre endDuration y 20:00 el día anterior
      en if
        nightTime > (timeDifference / 2) then "Night" else "Day", // evaluates if the night time is greater of equal to half the time difference
    type text )
  // Fin de la expresión para obtener el cambio
en
  GetShift

Háganos saber si eso podría funcionar para usted

David

Syndicate_Admin
Administrator
Administrator

No @scott3387 ,

eche un vistazo a la transformación de Power Query adjunta. (PBIX)

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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