flink(10) flink sql 窗口函数 及其他常见函数

本文详细介绍了Flink中的Table API窗口,包括Group Windows和Over Windows的使用,以及SQL中的TUMBLE、HOP和SESSION窗口。此外,还探讨了Flink中的各种内置函数,如标量函数、表函数和聚合函数,强调了用户自定义函数(UDF)的注册和使用方法。
摘要由CSDN通过智能技术生成

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 orde
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值