如何在FlinkSQL中定义滑动窗口(Sliding Window)和配置其属性?

提问者:帅平 问题分类:大数据
如何在FlinkSQL中定义滑动窗口(Sliding Window)和配置其属性?
2 个回答
自沧桑
自沧桑
在select中定义:
SELECT 
  HOP_START(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE) AS window_start,
  SUM(amount) AS total_amount
FROM orders
GROUP BY HOP(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE);
在create table中定义:
CREATE TABLE sliding_orders (
  window_start TIMESTAMP(3),
  window_end TIMESTAMP(3),
  total_amount DOUBLE,
  WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
) WITH (...);
INSERT INTO sliding_orders
SELECT 
  HOP_START(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE) AS window_start,
  HOP_END(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE) AS window_end,
  SUM(amount) AS total_amount
FROM orders
GROUP BY 
  HOP(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE),
  HOP_START(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE);
发布于:3周前 (05-28) IP属地:
有个笨蛋住进我心
有个笨蛋住进我心
具体的核心配置有:
1、窗口大小
HOP(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE)  -- 窗口大小为10分钟
2、滑动步长
HOP(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE)  -- 每5分钟滑动一次
3、时间语义
WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND  -- 允许5秒延迟
4、延迟数据处理
WATERMARK FOR event_time AS event_time - INTERVAL '10' SECOND  -- 允许10秒延迟
5、窗口触发器
HOP(event_time, INTERVAL '5' MINUTE, INTERVAL '10' MINUTE) 
TRIGGER COUNT(1000)  -- 每1000条数据触发计算
发布于:3周前 (05-28) IP属地:
我来回答