说明
SQL 查询的 分组窗口 是通过 GROUP BY 子句定义的。
类似于使用常规 GROUP BY 语句的查询,窗口分组语句的 GROUP BY 子句中带有一个 窗口函数 为每个分组计算出一个结果。
分组窗口函数:
TUMBLE(time_attr, interval):滚动窗口HOP(time_attr, interval, interval):滑动窗口SESSION(time_attr, interval):SESSION窗口
TUMBLE(time_attr, interval)
定义一个 滚动窗口。滚动窗口把行分配到有固定持续时间( interval )的不重叠的连续窗口。
例子:
5 分钟的滚动窗口以 5 分钟为间隔对行进行分组。
GROUP BY TUMBLE(t, INTERVAL '300' SECOND)
HOP(time_attr, interval, interval)
定义一个跳跃的时间窗口(即:滑动窗口)。
参数解释:
- 第一个 interval 参数:滑动的间隔
- 第二个 interval 参数:滑动窗口固定的持续时间
若滑动间隔小于窗口的持续时间,滑动窗口则会出现重叠;因此,行将会被分配到多个窗口中。
例子:
一个大小为 15 分钟的滑动窗口,其滑动间隔为 5 分钟,将会把每一行数据分配到 3 个 15 分钟的窗口中。
GROUP BY HOP(t, INTERVAL '300' SECOND, INTERVAL '900' SECOND)
SESSION(time_attr, interval)
定义一个会话时间窗口。会话时间窗口没有一个固定的持续时间,但是它们的边界会根据 interval 所定义的不活跃时间所确定;即一个会话时间窗口在定义的间隔时间内没有时间出现,该窗口会被关闭。
例如:时间窗口的间隔时间是 30 分钟,当其不活跃的时间达到30分钟后,若观测到新的记录,则会启动一个新的会话时间窗口(否则该行数据会被添加到当前的窗口),且若在 30 分钟内没有观测到新纪录,这个窗口将会被关闭。
参考:https://blog.csdn.net/weixin_42796403/article/details/114711619