赞
踩
Table API 窗口
时间语义,要配合窗口操作才能发挥作用
在Table API和SQL中 主要有两种窗口
Group Windows(分组窗口)
根据时间或行计数间隔,将行聚合到有限的组(Group)中,并对每个组的数据执行一次聚合函数
Over Windows (开窗函数)
针对每个输入行,计算相邻行范围内的聚合
Group Windows
group Windows 是使用window(w:GroupWindow)子句定义的,并且必须有as子句 制定一个别名
为了按窗口对表进行分组,窗口的别名 必须在group by子句中,像常规的分组字段一样引用
- val table = input.window([w:GroupWindow] as 'w)
- .group by ('w,'a)
- .select('a,'b.sum)
- //滚动窗口,要用Tumble类来定义
- //tumbling event-time window
- .window(Tumble over 10.minutes on 'rowtime as 'w)
- //tumble processing-time window
- .window(Tumble over 10.minutes on 'proctime as 'w)
- //滚动计数窗口 这里指定时间 是为了按照时间排序
- .window(Tumble over 10.rows on 'proctime as 'w)
- //滚动窗口,要用Slide类来定义
- //Sliding event-time window
- .window(Tumble over 10.minutes every 5.minutes on 'rowtime as 'w)
- //Sliding processing-time window
- .window(Tumble over 10.minutes every 5.minutes on 'proctime as 'w)
- //滑动计数窗口 这里指定时间 是为了按照时间排序
- .window(Tumble over 10.rows every 5.rows on 'proctime as 'w)
- //会话窗口
- //会话窗口用Session类来定义
- //session Event-time window
- .window(Session withGap 10.minutes on 'rowtime as 'w)
- //Session Processing-time Window
- .window(Session withGap 10.minutes on 'proctime as 'w)
Over Windows
Over window 聚合是标准SQL中已有的(over子句),可以在查询的SELECT子句中定义
Over window 聚合,会针对每个输入行,计算相邻行范围内的聚合
Over windows 使用window 子句定义,并在select 通过别名来引用
val table = input
.window([w:OverWindow] as 'w)
.select('a,'b.sum over 'w ,'c.min over 'w)
Table API 提供了over 类来配置Over窗口的属性
- //无界Over Window
-
- //可以在事件时间或处理时间,以及指定为时间间隔,或计数的范围内,定义Over windows
-
-
- //无界的事件时间over window
- .window(Over partitionBy 'a orderBy 'rowtime preceding UNBOUNDED_RANGE as
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。