是否可以将每15秒收到的单独设备消息合并为1个摘要设备消息?
例如,我要收集“温度”,“ RPM”和“仪表”消息:
Message 1
{
DeviceId: 1
Key: "Temperature"
Value: 15
}
Message 2
{
DeviceId: 1,
Key: "RPM"
Value: 2000
}
进入:
{
DeviceId: 1,
Readings:
{
"Temperature": 15,
"RPM": 2000
"Gauge": "Unknown" (no value in the 15 seconds window, so unknown)
}
}
编辑: 忘记添加了,预计如果设备的3条消息(“温度”,“ RPM”和“仪表”)中有1条到达SA。在接下来的15秒内可能会收到另外2个。因此,当SA作业看到1条消息时,应开始“收集”。 SA工作适合于此吗?还是我应该寻找其他解决方案?
答案 0 :(得分:0)
您可以使用LAG函数来执行此操作。看起来像这样:
SELECT DeviceId, [Key], [Value] LAG(reading) OVER (PARTITION BY DeviceId LIMIT DURATION(hour, 1) WHEN reading IS NOT NULL) FROM input
LAG允许您查看指定数量的事件,然后查看给定的分区键(在这种情况下,我使用DeviceId)。
答案 1 :(得分:0)
感谢您的答复。我已经使用SessionWindow解决了这个问题。