引言
实时任务的处理流程通常分3步,前2步建立好数据源与数据目标,之后再写数据计算的逻辑,完成对流式数据的分析处理,如下图所示:
窗口函数
窗口函数Flink SQL支持基于无限大窗口的聚合(无需显式定义在SQL Query中添加任何的窗口)以及对一个特定的窗口的聚合。
Flink SQL支持的窗口聚合主要是两种:Window聚合和Over聚合。Window聚合支持两种时间属性定义窗口:Event Time和Processing Time。每种时间属性类型支持三种窗口类型:滚动窗口(TUMBLE)、滑动窗口(HOP)和会话窗口(SESSION),本文将以滚动窗口(TUMBLE)为例,详细介绍窗口函数的使用。
-- 滚动窗口【proctime】
-- 2019-09-17 10:52:34
-- moxian
-- 滚动窗口(TUMBLE)将每个元素分配到一个指定大小的窗口中。通常滚动窗口有一个固定的大小,并且不会出现重叠。
-- 例如:如果指定了一个5分钟大小的滚动窗口,无限流的数据会根据时间划分成 [0:00 - 0:05)、 [0:05, 0:10)、 [0:10, 0:15)等窗口
insert into user_clicks_result
select
cast(TIMESTAMPADD(HOUR,8,tumble_start(PROCTIME,interval '1' minute)) as varchar) as window_start, --返回窗口的起始时间,如窗口区间[00:00,01:00],返回[00:00]
cast(TIMESTAMPADD(HOUR,8,tumble_end(PROCTIME,interval '1' minute)) as varchar) as window_end, --返回窗口的起始时间,如窗口区间[00:00,01:00],返回[01:00]
username,
cast(count(click_url) as varchar) as clicks
from user_clicks
group by
tumble(PROCTIME,interval '1' minute),username --tumble(time-attr,窗口大小)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。