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.
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
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.