ITPub博客

首页 > 大数据 > Hadoop > Flink SQL - 分组窗口聚合 TVF

Flink SQL - 分组窗口聚合 TVF

原创 Hadoop 作者:元亨利贞 时间:2023-07-21 16:42:16 0 删除 编辑

介绍

Flink SQL 中的分组窗口聚合 TVF 是一种新的窗口聚合方式,用于替代旧版的窗口分组语法。TVF 是表值函数的缩写,表示返回值是一张表的函数。

窗口聚合 TVF 可以按照不同类型的窗口函数对数据进行分组和聚合,例如:

  • TUMBLE:滚动窗口函数,按照固定的时间间隔对数据进行分组和聚合。例如:
SELECT window_start, window_end, SUM(price) AS totalFROM TABLE(TUMBLE(TABLE bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES))GROUP BY window_start, window_end;
复制
  • HOP:滑动窗口函数,按照固定的时间间隔和滑动步长对数据进行分组和聚合。例如:
SELECT window_start, window_end, SUM(price) AS totalFROM TABLE(HOP(TABLE bid, DESCRIPTOR(bidtime), INTERVAL '5' MINUTES, INTERVAL '10' MINUTES))GROUP BY window_start, window_end;
复制
  • CUMULATE:累积窗口函数,按照固定的时间间隔和最大保留时间对数据进行分组和聚合,每个窗口包含了之前所有的数据。例如:(注意: 窗口最大长度 = 累积步长的整数倍)
SELECT window_start, window_end, SUM(price) AS totalFROM TABLE(CUMULATE(TABLE bid, DESCRIPTOR(bidtime), INTERVAL '5' MINUTES, INTERVAL '10' MINUTES))GROUP BY window_start, window_end;
复制
  • SESSION:会话窗口函数,按照指定的会话间隔对数据进行分组和聚合,如果两条数据之间的时间差超过会话间隔,就会创建一个新的窗口。例如:
SELECT window_start, window_end, SUM(price) AS totalFROM TABLE(SESSION(TABLE bid, DESCRIPTOR(bidtime), INTERVAL '10' MINUTES))GROUP BY window_start, window_end;
复制

窗口聚合 TVF 的优点是:

  • 它们是标准化的,符合 SQL 2016 标准中的表值函数。
  • 它们是易于实现和扩展的,可以支持更多类型的窗口函数。
  • 它们支持一些旧版语法所不具备的特性,如 Local-Global 聚合优化、Distinct 解热点优化、Top-N 支持、GROUPING SETS 语法等。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70024433/viewspace-2965725/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-11-21

  • 博文量
    383
  • 访问量
    248975