我有一个Azure流分析作业,该作业通过Azure IOT集线器获取温度传感器的值,并将这些值保存在Azure存储帐户中。我想用时间戳和最近一小时的平均温度保存温度。我的查询如下:
WITH average AS
(
SELECT
Avg(data.temp) AS AverageTemp,
count(*) AS Batchsize
FROM
IOTHubEingabe
GROUP BY
SlidingWindow(minute, 60)
)
SELECT IOTHubEingabe.data.time,
IOTHubEingabe.data.temp,
average.AverageTemp,
average.Batchsize
INTO
[tempOutput]
FROM
IOTHubEingabe
INNER JOIN average
ON datediff(minute, IOTHubEingabe, average) BETWEEN 0 AND 60
此查询的问题是,我总是在一小时内得到相同的平均值,但是我希望每个值都为最后一小时的平均值。例如:
2019-11-21 12:00; 20 degrees; avarageTemp 11:00-12:00
2019-11-21 12:01; 21 degrees; averageTemp 11:01-12:01
2019-11-21 12:02; 21 degrees; averageTemp 11:02-12:02
我怀疑您需要使用Tumbling Window,这样窗口就不会重叠,这似乎使您感到困惑。如果您使用滑动窗口,那么大多数值将是相同的,这是合乎逻辑的,因为采样差异仅为1分钟,因此所有其他59分钟都相同。
ps。值甚至在您提供的样本中也不相同