当前位置:   article > 正文

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

flinksql开窗函数

Table API 窗口

时间语义,要配合窗口操作才能发挥作用

在Table API和SQL中 主要有两种窗口

Group Windows(分组窗口)

根据时间或行计数间隔,将行聚合到有限的组(Group)中,并对每个组的数据执行一次聚合函数

Over Windows (开窗函数)

针对每个输入行,计算相邻行范围内的聚合

 

Group Windows

group Windows 是使用window(w:GroupWindow)子句定义的,并且必须有as子句 制定一个别名

为了按窗口对表进行分组,窗口的别名 必须在group by子句中,像常规的分组字段一样引用

  1. val table = input.window([w:GroupWindow] as 'w)
  2. .group by ('w,'a)
  3. .select('a,'b.sum)
  4. //滚动窗口,要用Tumble类来定义
  5. //tumbling event-time window
  6. .window(Tumble over 10.minutes on 'rowtime as 'w)
  7. //tumble processing-time window
  8. .window(Tumble over 10.minutes on 'proctime as 'w)
  9. //滚动计数窗口 这里指定时间 是为了按照时间排序
  10. .window(Tumble over 10.rows on 'proctime as 'w)
  11. //滚动窗口,要用Slide类来定义
  12. //Sliding event-time window
  13. .window(Tumble over 10.minutes every 5.minutes on 'rowtime as 'w)
  14. //Sliding processing-time window
  15. .window(Tumble over 10.minutes every 5.minutes on 'proctime as 'w)
  16. //滑动计数窗口 这里指定时间 是为了按照时间排序
  17. .window(Tumble over 10.rows every 5.rows on 'proctime as 'w)
  18. //会话窗口
  19. //会话窗口用Session类来定义
  20. //session Event-time window
  21. .window(Session withGap 10.minutes on 'rowtime as 'w)
  22. //Session Processing-time Window
  23. .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窗口的属性

  1. //无界Over Window
  2. //可以在事件时间或处理时间,以及指定为时间间隔,或计数的范围内,定义Over windows
  3. //无界的事件时间over window
  4. .window(Over partitionBy 'a orderBy 'rowtime preceding UNBOUNDED_RANGE as 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/639027
推荐阅读
相关标签
  

闽ICP备14008679号