MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Trouver des lacunes dans d'énormes flux d'événements ?

Vous pouvez le faire avec le lag() fonction de fenêtre sur une partition par le stream_id qui est ordonné par l'horodatage. Le lag() la fonction vous donne accès aux lignes précédentes de la partition ; sans valeur de décalage, il s'agit de la ligne précédente. Donc, si la partition sur stream_id est triée par heure, alors la ligne précédente est l'événement précédent pour ce 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");