Flink基础-Table API教程

1.table api特点:

使得多声明的数据处理起来更为容易,扩展标准sql更为容易

enviroment:

Flink基础-Table API教程

如何得到一个表:

1.自己写table的描述信息

2.通过自定义tablesouce注册到env中

3.datastream也可以通过注册得到一个表

Flink基础-Table API教程

如何输出一个table:

和输入的三种方式是一致的

Flink基础-Table API教程

如何查询一个表:

对列上一些函数:

Flink基础-Table API教程

对列上的一些操作:

addcolumns添加,addorreplacecolumns添加并且覆盖,renamecolumns重命名,dropcolumns删除

withcolumns选择指定的列,withoutcolumns反选指定的列

cloumns使用的语法:

Flink基础-Table API教程

 可以是字段名,下标,默认下标是从1开始计算的

row-based operation:

map-operation的好处:

比如需要对这个表中的每一列都做一些udf的操作,比如if,cocat这种,

你就需要对每列都写一个udf,但是如果在table上使用map算子就会非常方便

Flink基础-Table API教程

flatmap-opreation:

输入一行-输出多行

Flink基础-Table API教程

aggregate-operation:

输入多行-输出一行

Flink基础-Table API教程

输入多行-输出多行:topn

flataggregate-operation:

Flink基础-Table API教程

aggregate vs tableaggregate:

Flink基础-Table API教程

窗口:

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

gruop windows 分组窗口:(整张表)

根据时间或行数据,把数据聚合到组中。

滚动窗口:tumbling windows

可以通过时间开窗,也可以通过行数开窗,之所以行数也要时间字段是因为需要对数据进行排序来取。

Flink基础-Table API教程

滑动窗口:sliding windows

Flink基础-Table API教程

 会话窗口:session window

over windows 开窗函数:(针对某行)

针对每个输入行,计算附近行范围的聚合。

Flink基础-Table API教程

无界窗口:over windows

 Flink基础-Table API教程

有界over windows:

目前flink只支持preceding 到current row,因为如果要支持following需要等待。

 Flink基础-Table API教程

总结:

Flink基础-Table API教程