flink1.12.x SQL:Group Windows 窗口查询

说明

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


原文出处:/show_1IX4ExCFQCgn.html