Romanbull
Se me ha asignado la tarea de encontrar los tiempos de descanso utilizados por cada empleado utilizando los siguientes datos de acceso a la puerta de cada empleado. La puerta 1 es la entrada principal, la puerta 3 es el área de producción. Por ejemplo, el empleado AK entró al edificio por la puerta 1 el 1/6/18 a las 18:18 y luego llegó a la puerta 3 a las 18:19. AK luego salió a tomar un descanso primero por la puerta 3 y luego por la puerta 1 a las 18:29 y regresó al área de producción por la puerta 1 a las 19:00 y la puerta 3 a las 19:01, así sucesivamente.
Mi requisito es encontrar lo siguiente:
Hora de inicio de turno AK: 1/6/18 a las 18:18
Primera pausa: 1/6/18 a las 18:29 a 19:01 = pausa de 32 minutos
Segundo descanso: 1/6/18 a las 20:28 al 1/6/18 20:49 = descanso de 21 minutos
Tercer descanso: 1/6/18 a las 20:58 al 1/6/18 21:47 = 49 min de descanso y así sucesivamente.
Intenté usar DAX (MINIF y MAXIF) y pude distinguir la hora de inicio y finalización del turno. Necesita ayuda para encontrar los tiempos de descanso tomados por cada empleado.
Fecha | Hora | Puerta | Nombre |
1 de junio | 1/6/2018 18:18 | Puerta 1 | Alaska |
1 de junio | 1/6/2018 18:19 | Puerta3 | Alaska |
1 de junio | 1/6/2018 18:29 | Puerta3 | Alaska |
1 de junio | 1/6/2018 18:29 | Puerta 1 | Alaska |
1 de junio | 1/6/2018 18:51 | Puerta 1 | AJ |
1 de junio | 1/6/2018 18:51 | Puerta3 | AJ |
1 de junio | 1/6/2018 19:00 | Puerta 1 | Alaska |
1 de junio | 1/6/2018 19:01 | Puerta3 | Alaska |
1 de junio | 1/6/2018 20:28 | Puerta3 | Alaska |
1 de junio | 1/6/2018 20:49 | Puerta3 | Alaska |
1 de junio | 1/6/2018 20:58 | Puerta3 | Alaska |
1 de junio | 1/6/2018 20:59 | Puerta 1 | Alaska |
1 de junio | 1/6/2018 21:47 | Puerta 1 | Alaska |
1 de junio | 1/6/2018 21:47 | Puerta3 | Alaska |
1 de junio | 1/6/2018 21:53 | Puerta3 | AJ |
1 de junio | 1/6/2018 21:54 | Puerta3 | AJ |
1 de junio | 1/6/2018 21:54 | Puerta2 | AJ |
1 de junio | 1/6/2018 21:55 | Puerta 1 | AJ |
1 de junio | 1/6/2018 22:11 | Puerta 1 | AJ |
1 de junio | 1/6/2018 22:15 | Puerta 1 | AJ |
1 de junio | 1/6/2018 22:16 | Puerta3 | AJ |
1 de junio | 1/6/2018 23:17 | Puerta3 | Alaska |
1 de junio | 1/6/2018 23:42 | Puerta 1 | Alaska |
1 de junio | 1/6/2018 23:43 | Puerta3 | Alaska |
1 de junio | 2/6/2018 0:11 | Puerta3 | AJ |
1 de junio | 2/6/2018 0:11 | Puerta2 | AJ |
1 de junio | 2/6/2018 0:14 | Puerta3 | AJ |
1 de junio | 2/6/2018 1:45 | Puerta3 | AJ |
1 de junio | 2/6/2018 1:45 | Puerta2 | AJ |
1 de junio | 2/6/2018 1:46 | Puerta2 | AJ |
1 de junio | 2/6/2018 1:46 | Puerta3 | AJ |
1 de junio | 2/6/2018 2:46 | Puerta3 | Alaska |
1 de junio | 2/6/2018 2:47 | Puerta 1 | Alaska |
1 de junio | 2/6/2018 4:06 | Puerta3 | AJ |
Romanbull
En respuesta a Phil_Seamark
Hola @Phil_Seamark,
Sí, necesito tu ayuda para modificar el código. El objetivo es dejar fuera la primera y última puerta de acceso para el inicio y el final del turno. Luego, necesito calcular la diferencia de tiempo entre cada par de accesos de door3 como se indica en la imagen donde he calculado manualmente y luego sumar esos tiempos de descanso.
yppd
La solución no me está funcionando.
Minutes To next Door = VAR PreviousDoorTime = MAXX( FILTER( 'Table1', 'Table1'[Name] = EARLIER(Table1[Name]) && 'Table1'[Time] < EARLIER('Table1'[Time]) ), 'Table1'[Time] ) VAR PreviousDoorNumber = MAXX( FILTER( 'Table1', 'Table1'[Name] = EARLIER(Table1[Name]) && 'Table1'[Time] = PreviousDoorTime), 'Table1'[Door]) VAR x = MINX( FILTER( 'Table1', 'Table1'[Name] = EARLIER(Table1[Name]) && <-- it shows me red line and says (EARLIER/EARLIEST refers to an earlier row context which doesn't exists 'Table1'[Time] > EARLIER('Table1'[Time]) ), 'Table1'[Time]) RETURN SWITCH( TRUE() , PreviousDoorNumber = "Door3" && 'Table1'[Door] = "Door3", DATEDIFF('Table1'[Time],x,MINUTE))
¿Has tenido alguna solución a esto?
Phil_Seamark
Hola @romanbull
Es posible que se requiera algo en este sentido. Tienes algunas filas para la misma persona que comparten exactamente el mismo minuto, lo que lo hace complicado. Con algunos pequeños ajustes, podría ser lo que necesita. He adjuntado un archivo PBIX
Minutes To next Door = VAR PreviousDoorTime = MAXX( FILTER( 'Table1', 'Table1'[Name] = EARLIER(Table1[Name]) && 'Table1'[Time] < EARLIER('Table1'[Time]) ), 'Table1'[Time] ) VAR PreviousDoorNumber = MAXX( FILTER( 'Table1', 'Table1'[Name] = EARLIER(Table1[Name]) && 'Table1'[Time] = PreviousDoorTime), 'Table1'[Door]) VAR x = MINX( FILTER( 'Table1', 'Table1'[Name] = EARLIER(Table1[Name]) && 'Table1'[Time] > EARLIER('Table1'[Time]) ), 'Table1'[Time]) RETURN SWITCH( TRUE() , PreviousDoorNumber = "Door3" && 'Table1'[Door] = "Door3", DATEDIFF('Table1'[Time],x,MINUTE))
Romanbull
En respuesta a Phil_Seamark
Gracias @Phil_Seamark por tu ayuda, ya que dijiste que los datos son un poco engañosos. Los datos no especifican si la marca de tiempo es una salida o una entrada y solo conduce a la especulación. Trabajé con su PBIX y ¿es esta la forma correcta de lo que intenté crear a partir de su archivo?
De forma manual, intenté documentar el tiempo de descanso en Excel. No estoy seguro de cómo se puede codificar esto en powerbi para obtener un resultado similar.
Phil_Seamark
En respuesta a Romanbull
Hola @romanbull
Entonces, ¿fue útil mi código sugerido? ¿Necesitas mi ayuda para modificarlo más?
Romanbull
En respuesta a Phil_Seamark
Hola @Phil_Seamark,
Sí, necesito tu ayuda para modificar el código. El objetivo es dejar fuera la primera y última puerta de acceso para el inicio y el final del turno. Luego, necesito calcular la diferencia de tiempo entre cada par de accesos de door3 como se indica en la imagen donde he calculado manualmente y luego sumar esos tiempos de descanso.