2017-09-10 1 views
0

Dans notre application, plusieurs périphériques IoT publient des données sur le hub IoT. Ils émettent de la lecture dans les pièces (ex: consommation d'énergie). Nous avons maintenant besoin de connaître l'énergie totale consommée dans une zone au cours de la dernière heure et de l'enregistrer. Supposons qu'il y ait une ampoule allumée à 8 heures du matin et qui consomme 60 watts et qu'elle soit éteinte à 8h20 pendant 10 minutes. A 8h30, il a été allumé de façon atténuée avec une consommation d'énergie de 40 watts. Donc, l'énergie (Watt par heure) consommée entre 8 et 9 heures du matin devrait être:Requête Azure Stream Analytics utilisant la fenêtre Tumbling

60 * 20/60 (de 8h00 à 8h20) + 0 (8h20 à 8h30) + 40 * 30/60 (de 8h30 à 9h00) = 40 watts par heure.

Comment pouvons-nous écrire une requête Stream Analytic (en utilisant la fenêtre Tumbling pour y parvenir).

Répondre

0

Vous pouvez utiliser HoppingWindow pour produire des événements chaque minute en répétant le dernier signal de l'appareil, puis utiliser TumblingWindow pour obtenir des agrégats horaires.

-- First query produces event every minute with latest known value up to 1 hour back 
WITH MinuteData AS 
(
SELECT deviceId, TopOne() OVER (ORDER BY ts DESC) AS lastRecord 
FROM input TIMESTAMP BY ts 
GROUP BY deviceId, HoppinWindow(miute, 1, 60) 
) 

SELECT 
deviceId, 
SUM(lastRecord.wat)/60 
FROM MinuteData 
GROUP BY deviceId, TumblingWindow(hour, 1)