是否有可能将每15秒收到的单独设备消息合并为1个汇总设备消息?
例如,我想收集“温度”,“RPM”和“Gauge”消息:
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条消息中的1条(“温度”,“RPM”和“仪表”)到达SA。其他2人很可能会在接下来的15秒内收到。因此SA工作应该在看到其中一条消息时开始“收集”。 SA工作是否适合这个或者我应该寻找其他解决方案吗?
您可以使用LAG函数执行此操作。看起来像这样:
SELECT DeviceId, [Key], [Value] LAG(reading) OVER (PARTITION BY DeviceId LIMIT DURATION(hour, 1) WHEN reading IS NOT NULL) FROM input
LAG允许您查看指定数量的事件,然后查看给定的分区键(在本例中,我使用了DeviceId)。
谢谢你的回复。我用SessionWindow解决了这个问题。