Flink系列之:详细深入介绍Flink SQL系统函数和自定义函数UDF
一、函数
- Flink的Table API 和 SQL同样提供了函数的功能:
- 两者在调用时略有不同:Table API中的函数是通过数据对象的方法调用来实现的。而SQL则是直接引用函数名称,传入数据作为参数。
- 例如,要把一个字符串str转换成全大写的形式,Table API的写法是调用str这个String对象的upperCase()方法:
str.upperCase()
- 而SQL中的写法就是直接引用UPPER()函数,将str作为参数传入:
UPPER(str)
二、系统函数
Flink SQL中的函数分为两类:
-
一类是SQL中内置的系统函数,直接通过函数名调用就可以,能够实现一些常用的转换操作,比如COUNT()、CHAR_LENGTH()、UPPER()等。
-
另一类函数则是用户自定义的函数(UDF),需要在表环境中注册才能使用。
-
系统函数也叫内置函数,是在系统中预先实现好的功能模块。可以通过固定的函数名直接调用,实现想要的转换操作。
-
Flink SQL提供了大量的系统函数,几乎支持所有的标准SQL中的操作。
-
Flink SQL中的系统函数又主要可以分为两大类:标量函数和聚合函数。
标量函数:
- 标量指只有数值大小、没有方向的量。所以标量函数指的就是只对输入数据做转换操作、返回一个值的函数。这里的输入数据对应在表中,一般就是一行数据中1个或多个字段,