Je diffuse des messages d'événement contenant un champ posix/heure. J'essaie de calculer dans quelle période j'ai reçu une série de messages d'un appareil.Obtention du laps de temps pendant lequel une série de messages est reçue dans les analyses de flux
Supposons que l'entrée suivante (simplifiée):
[
{ "deviceid":"device01", "epochtime":1500975613660 },
{ "deviceid":"device01", "epochtime":1500975640194 },
{ "deviceid":"device01", "epochtime":1500975649627 },
{ "deviceid":"device01", "epochtime":1500994473225 },
{ "deviceid":"device01", "epochtime":1500994486725 }
]
Le résultat de mon calcul doit être un message comme {deviceid, début, fin} pour chaque ID de périphérique. Je suppose qu'un nouveau délai commence, si l'intervalle de temps entre deux événements est plus long qu'une heure. Dans mon exemple, cela se traduirait par deux transmissions:
[
{"deviceid":"device01", "start":1500975613660, "end"=1500975649627},
{"deviceid":"device01", "start":500994473225, "end"=1500994486725}
]
je peux convertir le temps d'époque selon l'exemple 2 dans la documentation https://msdn.microsoft.com/en-us/library/azure/mt573293.aspx. Cependant, je ne peux pas utiliser l'horodatage converti avec la fonction LAG dans une sous-requête. Toutes les valeurs de previousTime sont nulles dans la sortie. Je ne suis pas sûr comment je peux effectuer mon calcul et quelle est la meilleure façon de le faire. J'ai besoin de comprendre le début et la fin d'une série d'événements.
Toute aide est très appréciée.
Merci beaucoup. J'ai pensé que je peux référencer ce champ aussi dans la requête elle-même. –