在我们的应用程序中,多个物联网设备将数据发布到物联网中心。他们在房间里放了一些阅读(例如:用电)。 现在我们需要找出一个区域在过去一小时内消耗的总能量并记录下来。
假设有一个灯泡在上午8点开启,功率为60瓦,在8点20分关闭10分钟。在8:30,它以昏暗的方式接通,功率使用40瓦。因此,在上午8点到9点之间消耗的能量(每小时瓦特数)应为:
60 * 20/60(上午8:00至上午8:20)+ 0(8:20至8:30)+ 40 * 30/60(8:30至9:00)=每瓦40瓦小时。
我们如何编写Stream Analytic查询(使用Tumbling窗口来实现此目的)。
答案 0 :(得分:0)
您可以使用HoppingWindow每分钟生成重复来自设备的最新信号的事件,然后使用TumblingWindow获取每小时聚合。
-- 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)