使用Azure Stream Analysis时,我可以使用AVG创建一种移动平均线,并通过HoppingWindow将它们分组,如下所示。
但是,这将在最后5秒内创建点的移动平均值。有没有办法创建最后n个数据点的移动平均值?我知道我可以调整窗口大小以使n个点进入窗口,但有没有办法测量精确的最后n个点,如MySQL和PostgresSQL中的那个?
SELECT System.TimeStamp AS OutTime, AVG (value)
INTO
[output]
FROM [input]
GROUP BY HoppingWindow(second,5,1)
答案 0 :(得分:0)
今天ASA窗口仅基于时间。但是,您可以使用LAG函数来获取以前的事件。 对于您的查询,如果您想在3个最新事件中取平均值,它将是这样的:
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
很抱歉给您带来不便。
谢谢,
JS