Flink hop window(滑动窗口)详解
1. 定义
hop window也就是常说的滑动窗口,主要涉及窗口大小和步长(slide size)。
先看下语法:
HOP(TABLE data, DESCRIPTOR(timecol), slide, size [, offset ])
使用group by hop时可以省略table:
GROUP BY HOP(etime,INTERVAL '5' MINUTE,INTERVAL '12' HOUR)
下面是一些常见写法:
SELECT * FROM TABLE(
HOP(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '5' MINUTES, INTERVAL '10' MINUTES));
或
SELECT window_start, window_end, SUM(price)
FROM TABLE(
HOP(TABLE Bid, DESCRIPTOR(bidtime), INTERVAL '5' MINUTES, INTERVAL '10' MINUTES))
GROUP BY window_start, window_end;
或旧语法,旧语法性能要差很多,推荐上面的TVF新语法
SELECT
*
HOP_START(etime, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE) AS window_start,
HOP_E