【发布时间】:2021-12-14 10:24:50
【问题描述】:
我正在尝试将数据分组到由不活动分隔的会话中,或在 postgres 中时间戳列中的间隙。 (作为参考,这在 kSQL kafka 流世界中称为“session window”。)
例如,假设我有一系列来自 IoT 设备的测量值。每行都有一个时间戳和一个值,但设备并不总是发送数据,只有在需要时才会发送数据,因此存在不活动的间隙。
timestamp | value
2021-10-29 11:05:00 | 100
2021-10-29 11:04:00 | 101
2021-10-29 09:05:00 | 99
2021-10-29 09:03:00 | 100
现在我想查询这些数据以对 10 分钟会话窗口内发生的行进行分组(在一定时间内没有行分隔)。
查询看起来像:
select
max(timestamp) as "end",
min(timestamp) as "start",
avg(value) as "average"
from table
group by
session_window(timestamp, 'interval 10 minutes') -- <- how to do this part?
输出应该是这样的:
end | start | average
2021-10-29 11:05:00 | 2021-10-29 11:04:00 | 100.5
2021-10-29 09:05:00 | 2021-10-29 09:03:00 | 99.5
【问题讨论】:
标签: sql postgresql time-series timescaledb