Cómo calcular la diferencia de tiempo entre muchos eventos de inicio/parada

Un usuario Pregunto ✅

sffc

No encuentro una buena manera en línea para calcular la diferencia horaria en Power BI Desktop cuando hay una multitud de eventos que son distintos entre sí. Por ejemplo, tengo más de 27 nombres de eventos diferentes que se verían así exactamente en orden cronológico:

marca de tiempo IDENTIFICACIÓN Expresar
30-Mar-21 23:47:48 50 Evento 1 Parada
30-Mar-21 23:44:14 50 Inicio del evento 1
30-Mar-21 23:44:13 54 Evento 2 Parada
30-Mar-21 23:34:25 54 Inicio del evento 2
30-Mar-21 23:34:07 54 Evento 2 Parada
30-mar-21 23:34:02 54 Inicio del evento 2
30-Mar-21 23:32:53 54 Evento 2 Parada
30-Mar-21 23:31:44 54 Inicio del evento 2
30-Mar-21 23:30:15 54 Evento 2 Parada
30-Mar-21 23:29:46 54 Inicio del evento 2
30-Mar-21 23:16:03 50 Evento 1 Parada
30-Mar-21 23:15:12 50 Inicio del evento 1
30-Mar-21 23:03:42 50 Evento 1 Parada
30-Mar-21 23:01:51 50 Inicio del evento 1
30-Mar-21 22:56:16 50 Evento 1 Parada
30-Mar-21 22:55:13 50 Inicio del evento 1
30-Mar-21 22:51:43 50 Evento 1 Parada
30-Mar-21 22:51:05 50 Inicio del evento 1
30-Mar-21 21:46:00 67 Evento 3 Parada
30-Mar-21 21:44:37 67 Inicio del evento 3
Hora Identificación Evento ‘n’

Necesito calcular la diferencia de tiempo entre los eventos de inicio y finalización para cada uno de los más de 27 tipos de eventos distintos. Cualquier consejo sobre la mejor manera de lograr esto sería muy apreciado.

sffc

Renuncié a Power BI y decidí convertir en Excel y luego actualizar el conjunto de datos en Power BI. Esta sería mi sugerencia para cualquiera que busque una solución similar….

= IF (C2 = C3, A2-A3,0) luego formatee el valor de forma personalizada en hh: mm: ss ..

sffc

Renuncié a Power BI y decidí convertir en Excel y luego actualizar el conjunto de datos en Power BI. Esta sería mi sugerencia para cualquiera que busque una solución similar….

= IF (C2 = C3, A2-A3,0) luego formatee el valor de forma personalizada en hh: mm: ss ..

Hola @sffc,

Estos son los pasos que puede seguir:

1. Ingrese la consulta de energía a través de Transformar datos, Agregar columna – Columna de índice – Desde 1

v-yangliu-msft_0-1619671639893.png

2. Crear columna calculada.

Group = ROUND(DIVIDE([Index],2),0)
Datediff =
var _max=MAXX(FILTER(ALL('Table'),[Group]=EARLIER([Group])),[Index])
var _starttime=CALCULATE(MAX([TimeStamp]),FILTER(ALL('Table'),[Index]=_max))
var _endtime=CALCULATE(MAX([TimeStamp]),FILTER(ALL('Table'),[Index]=_max-1))
var _datediff=DATEDIFF(_starttime,_endtime,SECOND)
return
IF([Index]=_max,_datediff,BLANK())

3. Resultado:

v-yangliu-msft_1-1619671639895.png

Atentamente,

liu yang

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución. para ayudar a los otros miembros a encontrarlo más rápidamente.

sffc

En respuesta a v-yangliu-msft

Gracias, Liu. En la captura de pantalla a continuación, implementar eso con mis datos solo devuelve números negativos por alguna razón. ¿Pensamientos?

Captura2.PNG

amichandak

@sffc, prueba una nueva columna como

nueva columna =
var _last = if(buscar(«Detener»,[State],,0) >0 , maxx(filtro(tabla, [ID] = antes ([ID]) && [TimeStamp] 0),[TimeStamp]), [TimeStamp])
regreso
if(buscar(«Detener»,[State],,0) >0 , fechadoiff(_1, [TimeStamp], minuto), 0)

sffc

En respuesta a amichandak

Escribí un script para agregar cadenas de inicio y detención a cada evento para ver si podía implementar esta sugerencia. Está devolviendo valores largos que no están en formato de fecha, y se produce un error cuando intento cambiarlos al formato de fecha y hora. La siguiente captura de pantalla muestra un ejemplo.

la pantallaCaptura.PNG

sffc

En respuesta a amichandak

Gracias por la rápida respuesta y solución, amitchandak. Mis disculpas: debo agregar una nota de aclaración de que mis eventos no tienen cadenas de inicio o fin en su nombre; Incluí el «inicio del evento» y la «finalización del evento» de forma genérica para mostrar que ocurren eventos consecutivos del mismo nombre donde la primera instancia es un inicio y la segunda en secuencia siempre es una parada.

Por ejemplo, «mi primer evento» siempre tendrá un segundo «mi primer evento» antes de que ocurra cualquier otro evento. Básicamente es una línea que se apaga (hora de inicio) y luego vuelve a comenzar (hora de parada) donde necesito calcular la cantidad total de tiempo que la línea tuvo tiempo de inactividad.

(Sin embargo, me gustaría señalar que la solución que sugirió anteriormente parece funcionar si tuviera que agregar «iniciar» y «detener» en la parte superior de los nombres de los eventos; hay más de 400k registros, por lo que esa es la única razón por la que no puedo agregar eso en los nombres de los eventos y utilizar la solución propuesta..)

Nuevamente gracias de antemano por cualquier consejo/sugerencia.

Deja un comentario

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