¿Cómo creo una columna de fórmula con fechas/turno personalizados?Estoy trabajando en un análisis relacionado con la estructura de turnos de trabajo. Operamos 12 horas por turno. Es decir, trabajamos de 7 a. m. a 7 p. m. (turno diurno, D) y de 7 p. m. a 7 a. m. (turno nocturno, N).
Actualmente tengo un script de columna de fórmula de la siguiente manera:
"WW" || Char (Week of Year (:date)) || "." || Char (Day of week (:date) - 1) ||
If (Hour (:date) <= 19 & Hour(:date) >= 7, "D", "N")
Parece que no funciona de la manera que esperaba bcs según este script, cambiaba a un nuevo día cada vez que llegaban las 12 a.m.
Por ejemplo:
El script convertirá el 01/12/2020 5:49:47 a.m. a WW49.2N. Debería ser WW49.1N. WW49.2D comienza cuando la fecha y hora son el 01/12/2020 7:00:00 a. m. Esto se debe a que el horario del turno de noche es de 7 p. m. a 7 a. m. ¿Alguien puede sugerir o recomendar una forma alternativa de crear el guión?
Modelado estadístico avanzadoAutomatización y secuencias de comandosInvestigación de Consumidores y MercadosDiseño de experimentosRe: ¿Cómo creo una columna de fórmula con fechas / turnos personalizados?Creo que la mejor manera de manejar esto es hacer una corrección en los valores de fecha y hora restando 7 horas, lo que hace que los turnos se alineen con los valores del día.
correctedDate = :date - In Hours( 7 );
"WW" || Char( Week Of Year( correctedDate ) ) || "." || Char( Day Of Week( correctedDate ) - 1 ) ||
If( Hour( correctedDate ) >= 0 & Hour( correctedDate ) <= 12,
"D",
"N"
);
Re: ¿Cómo creo una columna de fórmula con fechas/turnos personalizados?Esto es interesante, ya que podrías haber intercambiado las posiciones de >= y < en la fórmula:
correctedDate = :date - In Hours( 7 );
"WW" || Char( Week Of Year( correctedDate ) ) || "." || Char( Day Of Week( correctedDate ) - 1 ) ||
If( 0 < Hour( correctedDate ) <= 12,
"D",
"N"
);
Estoy trabajando en un problema similar y la asignación de turnos de noche y de día es ligeramente diferente, dependiendo de la posición relativa de los símbolos < y <= en la sentencia if. Sería genial permitir el uso directo de marcas de tiempo dentro de la fórmula if (si la hora es > 12:00:00...). Quizás sea así, no he investigado lo suficiente.
Sin embargo, mi pregunta principal es: ¿Cómo decidiste dónde colocar los símbolos < y <=? Naturalmente, es importante tener una división equitativa de 12 horas por turno, pero esto podría lograrse con ambas configuraciones (< antes de <= y <= antes de <).
Re: ¿Cómo creo una columna de fórmula con fechas/turnos personalizados?7:00 p. m. es el inicio del nuevo turno, que es la hora() 19. Dado que tomamos un desfase de 7 horas, el valor de Hora() que inicia el turno de noche es 19-7, que es 12. Si la comparación fuera <=, entonces un valor de tiempo de exactamente 12 se consideraría un turno de día.
Re: ¿Cómo creo una columna de fórmula con fechas/turnos personalizados?Gracias, me di cuenta de esto más tarde, mientras estaba retocando mi archivo; claro, después de haber publicado mi pregunta, que no estaba muy bien pensada. Gracias por su paciencia.