Azure 流分析查询移动平均线
Azure stream analysis query moving average
在使用 Azure 流分析时,我可以使用 AVG 创建一种移动平均线,并通过 HoppingWindow 将它们分组,如下所示。
但是,这将创建最后 5 秒内点的移动平均值。有没有办法创建最后 n 个数据点的移动平均值?我知道我可以调整 windows 的大小以使 n 个点进入 window,但是有没有一种方法可以像 MySQL 和 PostgresSQL 中那样精确测量最后 n 个点?
SELECT System.TimeStamp AS OutTime, AVG (value)
INTO
[output]
FROM [input]
GROUP BY HoppingWindow(second,5,1)
今天 ASA windows 仅基于时间。但是,您可以使用 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
在使用 Azure 流分析时,我可以使用 AVG 创建一种移动平均线,并通过 HoppingWindow 将它们分组,如下所示。
但是,这将创建最后 5 秒内点的移动平均值。有没有办法创建最后 n 个数据点的移动平均值?我知道我可以调整 windows 的大小以使 n 个点进入 window,但是有没有一种方法可以像 MySQL 和 PostgresSQL 中那样精确测量最后 n 个点?
SELECT System.TimeStamp AS OutTime, AVG (value)
INTO
[output]
FROM [input]
GROUP BY HoppingWindow(second,5,1)
今天 ASA windows 仅基于时间。但是,您可以使用 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