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

提问者:帅平 问题分类:大数据
如何在FlinkSQL中定义滚动窗口(Tumbling Window)和配置其属性?
2 个回答
激萌美少女
激萌美少女
在select中定义示例:
SELECT 
  TUMBLE_START(event_time, INTERVAL '5' MINUTE) AS window_start,
  SUM(amount) AS total_amount
FROM orders
GROUP BY TUMBLE(event_time, INTERVAL '5' MINUTE);
在create table中定义:
CREATE TABLE windowed_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 windowed_orders
SELECT 
  TUMBLE_START(event_time, INTERVAL '5' MINUTE) AS window_start,
  TUMBLE_END(event_time, INTERVAL '5' MINUTE) AS window_end,
  SUM(amount) AS total_amount
FROM orders
GROUP BY 
  TUMBLE(event_time, INTERVAL '5' MINUTE),
  TUMBLE_START(event_time, INTERVAL '5' MINUTE);
发布于:2周前 (05-28) IP属地:
与你无关
与你无关
具体的核心配置有:
1、窗口大小:
TUMBLE(event_time, INTERVAL '1' HOUR)  -- 1小时窗口
2、时间语义:
#事件时间
WATERMARK FOR event_time AS event_time - INTERVAL '5' SECOND
#处理时间
TUMBLE(PROCTIME(), INTERVAL '5' MINUTE)  -- 处理时间窗口
3、延迟数据处理
WATERMARK FOR event_time AS event_time - INTERVAL '10' SECOND  -- 允许10秒延迟
4、窗口触发器
TUMBLE(event_time, INTERVAL '5' MINUTE) 
TRIGGER COUNT(1000)  -- 每1000条数据触发计算
发布于:2周前 (05-28) IP属地:
我来回答