MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Encontrando lacunas em grandes fluxos de eventos?


Você pode fazer isso com o lag() função window sobre uma partição pelo stream_id que é ordenado pelo timestamp. O lag() função lhe dá acesso a linhas anteriores na partição; sem um valor de atraso, é a linha anterior. Portanto, se a partição em stream_id for ordenada por tempo, a linha anterior será o evento anterior para esse stream_id.
SELECT stream_id, lag(id) OVER pair AS start_id, id AS end_id,
       ("timestamp" - lag("timestamp") OVER pair) AS diff
FROM my_table
WHERE diff > interval '2 minutes'
WINDOW pair AS (PARTITION BY stream_id ORDER BY "timestamp");