本文为您介绍实时计算Flink版支持的所有内置函数。
支持的函数
Flink全托管VVR 3.0.0版本在Flink V1.12的基础上增加了部分内置函数,详情请参见标量函数、表值函数和聚合函数。下表展示的是Flink全托管在Flink V1.15版本的基础上支持的全部内置函数及简要说明。
不同Flink版本支持的函数可能会有差异,如果您需要查看函数详情及不同版本差异,请查看对应的文档链接,详情请参见Flink V1.12内置函数、Flink V1.13内置函数、Flink V1.14内置函数、Flink V1.15内置函数、Flink V1.16内置函数和Flink V1.17内置函数。
如果内置函数中不存在您所需的函数,您可以通过自定义函数实现,自定义函数详情请参见自定义函数概述。
标量函数
类别 | 函数 | 说明 |
比较函数 | 如果value1等于value2返回true。 | |
如果value1不等于value2返回true。 | ||
如果value1大于value2返回true。 | ||
如果value1大于或等于value2返回true。 | ||
如果value1小于value2返回true。 | ||
如果value1小于等于value2返回true。 | ||
如果值为NULL返回true。 | ||
如果值不为NULL返回true。 | ||
value1和value2的数据类型和值不相同,则返回true。所有NULL值视为彼此相等。 | ||
value1和value2的数据类型和值相同,则返回true。所有NULL值视为彼此相等。 | ||
默认或使用ASYMMETRIC关键字的情况下,如果value1大于等于value2且小于等于value3返回true。 | ||
value1 NOT BETWEEN [ ASYMMETRIC | SYMMETRIC ] value2 AND value3 | 默认或使用ASYMMETRIC关键字的情况下,如果value1小于value2或大于 value3,则返回true。 | |
如果string1匹配string2返回true。 | ||
如果string1与string2不匹配返回true。 | ||
如果string1匹配SQL正则表达式string2返回true。 | ||
如果string1与SQL正则表达式string2不匹配返回true。 | ||
在给定列表 (value2, value3, …) 中存在 value1返回true。 | ||
在给定列表 (value2, value3, …) 中不存在value1返回true。 | ||
如果子查询至少返回一行则返回true。 | ||
如果value等于子查询结果集中的一行则返回true。 | ||
如果value不包含于子查询返回的行则返回true。 | ||
逻辑函数 | 使用BITAND函数进行按位与操作。 | |
使用BITNOT函数进行按位取反。 | ||
使用BITOR函数进行按位取或。 | ||
使用BITXOR函数进行按位取异或。 | ||
如果boolean1为true或boolean2为true返回true。 | ||
如果boolean1和boolean2都为true返回true。 | ||
如果布尔值为FALSE返回true;如果布尔值为true返回FALSE;如果布尔值为UNKNOWN返回UNKNOWN。 | ||
如果布尔值为FALSE返回true;如果 boolean为true或UNKNOWN返回FALSE。 | ||
如果boolean为true或UNKNOWN返回true;如果boolean为FALSE返回FALSE。 | ||
如果boolean为true返回true;如果 boolean为FALSE或UNKNOWN返回FALSE。 | ||
如果boolean为FALSE或UNKNOWN返回true;如果布尔值为true返回FALSE。 | ||
如果布尔值为UNKNOWN返回true;如果boolean为true或FALSE返回FALSE。 | ||
如果boolean为true或FALSE返回true;如果布尔值为UNKNOWN返回FALSE。 | ||
算术函数 | 返回numeric。 | |
返回numeric的相反数。 | ||
返回numeric1加numeric2。 | ||
返回numeric1减numeric2。 | ||
返回numeric1乘以numeric2。 | ||
返回numeric1除以numeric2。 | ||
返回numeric1除以numeric2的余数。 | ||
返回numeric1的numeric2次方。 | ||
返回numeric的绝对值。 | ||
返回numeric的平方根。 | ||
返回numeric的自然对数(以e为底)。 | ||
返回以10为底的numeric的对数。 | ||
返回以2为底的numeric的对数。 | ||
当用一个参数调用时,返回 numeric2 的自然对数。当使用两个参数调用时,此函数返回 numeric2 以 numeric1 为底的对数。numeric2 必须大于 0,numeric1 必须大于 1。 | ||
返回e的numeric次幂。 | ||
向上取整,并返回大于或等于numeric的最小整数。 | ||
向下取整,并返回小于或等于numeric的最大整数。 | ||
返回numeric的正弦值。 | ||
返回numeric的双曲正弦值。返回类型为 DOUBLE。 | ||
返回numeric的余弦值。 | ||
返回numeric的正切值。 | ||
返回numeric的双曲正切值。返回类型为 DOUBLE。 | ||
返回numeric的余切值。 | ||
返回numeric的反正弦值。 | ||
返回numeric的反余弦值。 | ||
返回numeric的反正切值。 | ||
返回坐标 (numeric1, numeric2) 的反正切。 | ||
返回numeric的双曲余弦值。返回值类型为DOUBLE。 | ||
返回弧度numeric的度数表示。 | ||
返回度数numeric的弧度表示。 | ||
返回numeric的符号。 | ||
返回numeric四舍五入保留INT小数位的值。 | ||
返回无比接近pi的值。 | ||
返回无比接近e的值。 | ||
返回[0.0, 1.0) 范围内的伪随机双精度值。 | ||
返回范围为[0.0, 1.0) 的伪随机双精度值,初始种子为INT。 | ||
返回[0, INT) 范围内的伪随机整数。 | ||
返回范围为[0, INT2) 的伪随机整数,初始种子为INT1。 | ||
根据RFC 4122 类型 4(伪随机生成)UUID,返回UUID(通用唯一标识符)字符串。 | ||
以二进制格式返回INTEGER的字符串表示形式。 | ||
以十六进制格式返回整数numeric值或 STRING的字符串表示形式。 | ||
返回截取integer2位小数的数字。 | ||
字符串函数 | 返回STRING1和STRING2的连接。 | |
返回字符串中的字符数。 | ||
以大写形式返回字符串。 | ||
以小写形式返回字符串。 | ||
返回 STRING2 中第一次出现STRING1的位置(从 1 开始);如果在STRING2中找不到STRING1返回 0。 | ||
返回从STRING2中删除以字符串STRING1开头、结尾或开头且结尾的字符串的结果。 处理TRAILING参数时,会移除字符串末尾的所有字符,直到遇到一个不在TRAILING参数中的字符为止。例如,TRIM(TRAILING 'fe' from 'abcdef')返回abcd。 | ||
返回从STRING中删除左边空格的字符串。 | ||
返回从STRING中删除右边空格的字符串。 | ||
返回INT个string连接的字符串。 | ||
使用REGEXP_REPLACE函数,用目标字符串替换指定字符串,并返回新的字符串。 | ||
OVERLAY(string1 PLACING string2 FROM integer1 [ FOR integer2 ]) | 返回一个字符串,该字符串从位置INT1用 STRING2替换STRING1的INT2(默认为 STRING2的长度)字符。 | |
返回STRING从位置INT1开始,长度为INT2(默认到结尾)的子字符串。 | ||
返回一个新字符串,它用STRING1中的 STRING3(非重叠)替换所有出现的 STRING2。 | ||
将字符串STRING1按照STRING2正则表达式的规则拆分,返回指定INTEGER1处位置的字符串。 | ||
返回新形式的 STRING,其中每个单词的第一个字符转换为大写,其余字符转换为小写。这里的单词表示字母数字的字符序列。 | ||
返回连接string1,string2, … 的字符串。如果有任一参数为NULL,则返回NULL。 | ||
返回将STRING2,STRING3, … 与分隔符 STRING1连接起来的字符串。 | ||
返回从string1靠左填充string2到INT长度的新字符串。 | ||
返回从string1靠右边填充string2到INT长度的新字符串。 | ||
返回字符串string1的base64解码的结果。 | ||
返回字符串string的base64编码的结果。 | ||
返回字符串string第一个字符的数值。 | ||
返回二进制等于integer的ASCII字符。 | ||
使用提供的字符集(US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE或UTF-16)解码。 | ||
使用提供的字符集(US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE或UTF-16)编码。 | ||
返回string2在 string1中第一次出现的位置。 | ||
返回字符串中最左边的长度为integer值的字符串。 | ||
返回字符串中最右边的长度为integer值的字符串。 | ||
返回string2中string1在位置integer之后第一次出现的位置。 | ||
使用PARSE_URL函数,返回目标URL中指定部分解析后的值。 | ||
使用REGEXP函数,对指定的字符串执行一个正则表达式搜索,并返回一个Boolean值表示是否找到指定的匹配模式。 | ||
返回反转的字符串。 | ||
使用SPLIT_INDEX函数,将目标字符串按照指定分隔符分割成若干段,返回指定位置的字段信息。 | ||
使用分隔符将string1拆分为键值对后返回一个 map。 | ||
返回字符串的子字符串,从位置integer1开始,长度为integer2。 | ||
时间函数 | 以yyyy-MM-dd的形式返回从字符串解析的 SQL日期。 | |
使用DATEDIFF函数计算两个日期之间的天数差值。 | ||
使用DATE_ADD函数返回指定日期增加目标天数后的日期。 | ||
使用DATE_SUB函数返回指定日期减去目标天数后的日期。 | ||
以HH:mm:ss的形式返回从字符串解析的SQL 时间。 | ||
以yyyy-MM-dd HH:mm:ss[.SSS]的形式返回从字符串解析的SQL时间戳。 | ||
从dd hh:mm:ss.fff形式的字符串解析SQL 毫秒间隔或者从yyyy-mm形式的字符串解析 SQL月数间隔。 | ||
返回本地时区的当前SQL时间,返回类型为 TIME(0)。 | ||
返回本地时区的当前SQL时间,返回类型为 TIMESTAMP(3)。 | ||
返回本地时区的当前SQL时间,这是 LOCAL_TIME的同义词。 | ||
返回本地时区中的当前SQL日期。 | ||
返回本地时区的当前SQL时间戳。 | ||
返回本地时区的当前SQL时间戳,这是 CURRENT_TIMESTAMP的同义词。 | ||
返回本地时区的当前SQL时间戳。 | ||
返回从时间的时间间隔单位部分提取的long值。 | ||
从SQL日期date返回年份。 | ||
从SQL日期date 返回一年中的季度。 | ||
从SQL日期date返回一年中的月份。 | ||
从SQL日期date返回一年中的第几周。 | ||
从SQL日期date返回一年中的第几天。 | ||
从SQL日期date返回一个月中的第几天。 | ||
从SQL时间戳timestamp返回小时单位部分的小时数。 | ||
从SQL时间戳timestamp返回分钟单位的分钟数。 | ||
从SQL时间戳timestamp返回秒单位部分的秒数。 | ||
返回将时间点timepoint向下取值到时间单位 timeintervalunit的值。 | ||
返回将时间点timespoint向上取值到时间单位 TIMEINTERVALUNIT的值。 | ||
如果由 (timepoint1, temporal1) 和 (timepoint2, temporal2)定义的两个时间间隔重叠,则返回true。 | ||
使用DATE_FORMAT函数将字符串类型的日期从原格式转换至目标格式。 | ||
使用DATE_FORMAT_TZ函数将时间戳类型的数据根据指定的时区,转成指定格式的字符串。 | ||
将指定时间间隔单位的时间加上指定的间隔时间,返回一个新的时间点。 | ||
返回timepoint1和timepoint2之间时间间隔。 | ||
将日期时间string1(具有默认ISO时间戳格式yyyy-MM-dd HH:mm:ss)从时区string2转换为时区string3的值。 | ||
使用FROM_UNIXTIME函数返回VARCHAR类型的日期值。 | ||
使用UNIX_TIMESTAMP函数,将入参转换为长整型的时间戳。 | ||
使用TO_DATE函数,将INT类型或者VARCHAR类型的日期转换成DATE类型。 | ||
将纪元秒或纪元毫秒转换TIMESTAMP_LTZ。 | ||
将UTC+0时区下格式为string2(默认为yyyy-MM-dd HH:mm:ss)的字符串string1转换为时间戳。 | ||
使用TO_TIMESTAMP_TZ函数,将VARCHAR类型的日期根据指定时区转换成TIMESTAMP类型。 | ||
返回给定时间列属性rowtime的当前水印。 | ||
条件函数 | 当第一个时间值包含在 (valueX_1, valueX_2, …) 中时,返回resultX。 | |
CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END | 满足第一个条件X时返回resultX。 | |
如果value1等于value2返回NULL,否则返回 value1。 | ||
从value1, value2, … 返回第一个不为NULL的值。 | ||
如果满足条件,则返回true_value,否则返回 false_value。 | ||
如果输入为NULL,则返回 null_replacement,否则返回输入。 | ||
如果字符串中的所有字符都是字母,则返回true,否则返回false。 | ||
如果string可以解析为有效数字,则返回true,否则返回false。 | ||
如果字符串中的所有字符都是数字,则返回true,否则返回false。 | ||
返回所有输入参数的最大值,如果输入参数中包含NULL,则返回NULL。 | ||
返回所有输入参数的最小值,如果输入参数中包含NULL,则返回NULL。 | ||
类型转换函数 | 使用CONV函数对数字或字符类型的数值进行进制转换。 | |
返回被强制转换为类型type的新值。 | ||
返回输入表达式的数据类型的字符串表示形式。 | ||
集合函数 | 返回数组中元素的数量。 | |
返回数组中INT位置的元素。 | ||
返回数组的唯一元素(其基数应为1)。 | ||
返回map中的entries数量。 | ||
返回map中指定key对应的值。 | ||
JSON函数 | 判断给定的字符串是否为有效的JSON。 | |
JSON_EXISTS(jsonValue, path [ { TRUE | FALSE | UNKNOWN | ERROR } ON ERROR ]) | 确定一个JSON字符串是否符合给定的路径搜索条件。 | |
将一个值序列化为JSON。该函数返回一个包含序列化值的JSON字符串。 | ||
使用JSON_VALUE函数,从JSON字符串中提取指定路径的表达式。 | ||
从JSON字符串中提取JSON值。 | ||
JSON_OBJECT([[KEY] key VALUE value]* [ { NULL | ABSENT } ON NULL ]) | 从键值对列表中构建一个JSON对象字符串。 | |
JSON_OBJECTAGG([KEY] key VALUE value [ { NULL | ABSENT } ON NULL ]) | 将键值表达式汇总为一个JSON对象字符串。 | |
从值列表中构建一个JSON数组字符串。 | ||
通过将项聚合成一个数组来构建一个JSON对象字符串。 | ||
值构建函数 | -- implicit constructor with parenthesis (value1 [, value2]*) | 返回从值列表 (value1, value2, …) 创建的行。 |
返回从值列表 (value1, value2, …) 创建的数组。 | ||
返回从键值对列表 ((value1, value2), (value3, value4), …) 创建的map。 | ||
值获取函数 | 按名称从Flink复合类型(例如,Tuple,POJO)返回字段的值。 | |
返回Flink复合类型(例如,Tuple,POJO)的平面表示,将其每个直接子类型转换为单独的字段。 | ||
分组函数 | 返回唯一标识分组键组合的整数。 | |
GROUPING(expression1 [, expression2]* ) | GROUPING_ID(expression1 [, expression2]* ) | 返回给定分组表达式的位向量。 | |
哈希函数 | 以32个十六进制数字的字符串形式返回string的MD5哈希值。 | |
以40个十六进制数字的字符串形式返回string 的SHA-1哈希值。 | ||
以56个十六进制数字的字符串形式返回string的SHA-224哈希值。 | ||
以64个十六进制数字的字符串形式返回string的SHA-256哈希值。 | ||
以96个十六进制数字的字符串形式返回string的SHA-384哈希值。 | ||
以128个十六进制数字的字符串形式返回string的SHA-512哈希值。 | ||
使用SHA-2系列散列函数(SHA-224,SHA-256,SHA-384或SHA-512)返回散列值。 | ||
使用MURMUR_HASH函数,按Murmur 32哈希算法计算指定参数的32位哈希值。 | ||
使用MURMUR_HASH_64函数,按Murmur 128哈希算法计算指定参数的64位哈希值。 | ||
其他 | 使用ISNAN函数,判断指定的浮点数是否为NaN(Not a number),类似于Java中Double.isNaN()或Float.isNaN()函数。 | |
使用KEYVALUE函数,将目标字符串按照split1分隔符拆分成Key-Value(KV)对,然后按照split2分隔符将Key-Value对分开,返回Key对应的Value。 |
表值函数
函数 | 说明 |
按from、from+1、from+2 … to-1的规则,生成一系列填充数据。 | |
从JSON字符串中取出各路径字符串所表示的值。 | |
将目标字符串中拆分为Key-Value(KV)对,匹配split1和split2的KV对,并返回key_name1和key_name2对应的Value值。 | |
根据指定的分隔符将目标字符串拆分为子字符串,并返回子字符串列表。 |
聚合函数
函数 | 说明 |
COUNT([ ALL ] expression | DISTINCT expression1 [, expression2]*) | 默认情况下或使用关键字ALL,返回不为NULL的表达式的输入行数。 |
返回输入行数。 | |
默认情况下或使用关键字ALL,返回所有输入行中表达式的平均值(算术平均值)。 | |
默认情况下或使用关键字ALL,返回所有输入行的表达式总和。 | |
默认情况下或使用关键字ALL,返回所有输入行中表达式的最大值。 | |
默认情况下或使用关键字ALL,返回所有输入行中表达式的最小值。 | |
默认情况下或使用关键字ALL,返回所有输入行中表达式的总体标准偏差。 | |
默认情况下或使用关键字ALL,返回所有输入行中表达式的样本标准偏差。 | |
默认情况下或使用关键字ALL,返回所有输入行中表达式的总体方差(总体标准差的平方)。 | |
默认情况下或使用关键字ALL,返回所有输入行中表达式的样本方差(样本标准差的平方)。 | |
默认情况下或使用关键字ALL,返回跨所有输入行的多组表达式。 | |
VAR_SAMP() 的同义方法。 | |
返回值在一组值中的排名。 | |
返回值在一组值中的排名。结果是一加先前分配的等级值。 | |
在窗口分区内根据rows的排序为每一行分配一个唯一的序列号,从一开始。 | |
返回窗口中当前行之后第offset行处的表达式值。 说明 流模式下暂不支持LEAD函数。 | |
返回窗口中当前行之前第offset行处的表达式值。 | |
连接字符串表达式的值并在它们之间放置分隔符值。 | |
提升作业性能。 | |
返回指定数据流的第1条非NULL数据。 | |
返回指定数据流的最后1条非NULL数据。 |