2017-06-26 1 views
0

Lors de l'utilisation d'Azure Stream Analysis, je peux créer une sorte de moyenne mobile à l'aide d'AVG et les regrouper par HoppingWindow comme le code indiqué ci-dessous. Cependant, cela créera une moyenne mobile des points dans les 5 dernières secondes. Existe-t-il un moyen de créer une moyenne mobile du dernier n point de données? Je comprends que je peux ajuster la taille des fenêtres pour faire apparaître n points dans la fenêtre, mais y a-t-il un moyen de mesurer exactement les n derniers points comme celui de MySQL et PostgresSQL?Requête d'analyse de flux Azure, moyenne mobile

SELECT System.TimeStamp AS OutTime, AVG (value) 
INTO 
[output] 
FROM [input] 
GROUP BY HoppingWindow(second,5,1) 

Répondre

0

Aujourd'hui, les fenêtres ASA sont uniquement basées sur le temps. Cependant, vous pouvez utiliser la fonction LAG pour obtenir des événements précédents. Pour votre requête, si vous voulez faire la moyenne dans les 3 derniers événements, ce sera quelque chose comme ceci:

SELECT System.TimeStamp AS OutTime, 
     AvgValue= (LAG(value,1) OVER (LIMIT DURATION(minute, 5)) 
       + LAG(value,2) OVER (LIMIT DURATION(minute, 5)) 
       + LAG(value,3) OVER (LIMIT DURATION(minute, 5)) 
       )/3 
FROM input 

Désolé pour la gêne occasionnée.

Merci,

JS

+1

Salut JS, Merci de votre réponse! Je l'ai couru et il peut réaliser ce que j'ai demandé. Je demandais cela en partie parce que je ne savais pas que les fenêtres ne pouvaient être basées que sur le temps. Maintenant, cela a plus de sens. – CLD