Separe el turno de día del turno de noche dividiéndolo en dos filas

Un usuario Pregunto ✅

poderenM

Hola: Cada fila a continuación representa cada turno, de 6 a. m. a 6 p. m. representa el turno de día y de 6 p. m. a 6 a. m. representa el turno de noche. Para el número de índice 2713 (segunda fila), 1 hora corresponde al turno de día y las 3 horas restantes corresponden a la noche. Me gustaría separar el turno de noche del turno de día. Para este tipo de turno, necesito crear una fila para el turno de día de 1 hora y otra fila para el turno de noche de 3 horas. ¿Cómo creo dinámicamente filas adicionales para turnos mixtos (día y noche)? Cualquier ayuda sería muy apreciada. Gracias.

Captura.PNG

mahoneypat

Consulte este código M para ver un ejemplo de cómo hacerlo. Cree una nueva consulta en blanco y, en el Editor avanzado, reemplace el texto allí con esto:

dejar
Fuente = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(«i45WMlTSUTLTNzTUNzIwMlAwtzIwACKFAF8UYUNDhHisTrSSEUTWCCJriqYJKmyJpCcWAA==», BinaryEncoding.Base64), Compression.Deflate)), let _t = ((escriba texto anulable) meta [Serialized.Text = true]) en la tabla de tipos [Index = _t, ShiftStart = _t, ShiftEnd = _t]),
#»Tipo cambiado» = Table.TransformColumnTypes(Source,{{«Index», Int64.Type}, {«ShiftStart», type datetime}, {«ShiftEnd», type datetime}}),
#»Personalizado agregado» = Table.AddColumn(#»Tipo cambiado», «FirstShiftHours», cada uno si Time.Hour([ShiftStart]) < 18 entonces si Hora.Hora([ShiftEnd]) > 18 luego Duración.TotalHours(#time(18,0,0) – DateTime.Time([ShiftStart])) else Duración.TotalHours(DateTime.Time([ShiftEnd]) – FechaHora.Hora([ShiftStart])) de lo contrario nulo),
#»Personalizado1 agregado» = Table.AddColumn(#»Personalizado agregado», «SecondShiftHours», cada uno si Time.Hour([ShiftEnd]) >= 18 entonces si Hora.Hora([ShiftStart]) < 18 luego Duración.TotalHours(DateTime.Time([ShiftEnd])-#time(18,0,0)) else Duration.TotalHours(DateTime.Time([ShiftEnd]) - FechaHora.Hora([ShiftStart])) de lo contrario nulo),
#»Otras columnas sin pivotar» = Table.UnpivotOtherColumns(#»Custom1 agregado», {«Índice», «ShiftStart», «ShiftEnd»}, «Atributo», «Valor»),
#»Tipo 1 cambiado» = Table.TransformColumnTypes(#»Otras columnas sin pivotar»,{{«Valor», tipo número}})
en
#»Cambiado Tipo1″

Si esto funciona para usted, por favor márquelo como la solución. También se agradecen los elogios. Por favor, hágamelo saber si no.

Saludos,

Palmadita

mahoneypat

Consulte este código M para ver un ejemplo de cómo hacerlo. Cree una nueva consulta en blanco y, en el Editor avanzado, reemplace el texto allí con esto:

dejar
Fuente = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText(«i45WMlTSUTLTNzTUNzIwMlAwtzIwACKFAF8UYUNDhHisTrSSEUTWCCJriqYJKmyJpCcWAA==», BinaryEncoding.Base64), Compression.Deflate)), let _t = ((escriba texto anulable) meta [Serialized.Text = true]) en la tabla de tipos [Index = _t, ShiftStart = _t, ShiftEnd = _t]),
#»Tipo cambiado» = Table.TransformColumnTypes(Source,{{«Index», Int64.Type}, {«ShiftStart», type datetime}, {«ShiftEnd», type datetime}}),
#»Personalizado agregado» = Table.AddColumn(#»Tipo cambiado», «FirstShiftHours», cada uno si Time.Hour([ShiftStart]) < 18 entonces si Hora.Hora([ShiftEnd]) > 18 luego Duración.TotalHours(#time(18,0,0) – DateTime.Time([ShiftStart])) else Duración.TotalHours(DateTime.Time([ShiftEnd]) – FechaHora.Hora([ShiftStart])) de lo contrario nulo),
#»Personalizado1 agregado» = Table.AddColumn(#»Personalizado agregado», «SecondShiftHours», cada uno si Time.Hour([ShiftEnd]) >= 18 entonces si Hora.Hora([ShiftStart]) < 18 luego Duración.TotalHours(DateTime.Time([ShiftEnd])-#time(18,0,0)) else Duration.TotalHours(DateTime.Time([ShiftEnd]) - FechaHora.Hora([ShiftStart])) de lo contrario nulo),
#»Otras columnas sin pivotar» = Table.UnpivotOtherColumns(#»Custom1 agregado», {«Índice», «ShiftStart», «ShiftEnd»}, «Atributo», «Valor»),
#»Tipo 1 cambiado» = Table.TransformColumnTypes(#»Otras columnas sin pivotar»,{{«Valor», tipo número}})
en
#»Cambiado Tipo1″

Si esto funciona para usted, por favor márquelo como la solución. También se agradecen los elogios. Por favor, hágamelo saber si no.

Saludos,

Palmadita

poderenM

En respuesta a mahoneypat

Gracias por la solución. Funciona.

poderenM

En respuesta a poderenM

No puedo aceptar como solución. Estoy teniendo el siguiente error

Captura.PNG

lbendlin

Cree una columna personalizada que concatene la cantidad de horas para el turno de día y para el turno de noche.

Entonces, para el índice #2713, esa columna sería «1,3». Para #2581 sería un solo valor «2»

Luego divida esa columna por delimitador (coma) y en las opciones avanzadas elija «Dividir en filas»

Eso creará filas separadas si un índice cae en ambos turnos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *