【flink 床头书系列】flink System (Built-in) Functions内置函数词典

本文主要介绍了Flink系统的内置函数,包括标量函数(如比较、逻辑、算术等函数)、聚合函数、列函数等。还提及了时间间隔和时间点单位规范,强调具体使用的函数取决于需求和数据类型,列函数仅在Table API中使用。

Flink System (Built-in) Functions内置函数

文章目录

  • Flink System (Built-in) Functions内置函数
    • 标量函数
      • 比较函数
      • 逻辑函数
      • 算术函数
      • 字符串函数
      • 时间函数
      • 条件函数
      • 类型转换函数
      • 集合函数
      • JSON 函数
      • Value Construction Functions
      • Value Access Functions
      • 哈希函数
      • Auxiliary Functions
      • 聚合函数
    • 时间间隔和时间点单位规范
    • 列函数

Flink Table API & SQL提供了一套用于数据转换的内置函数。本页面对它们进行了简要概述。如果您需要的函数尚未支持,可以实现一个自定义函数。如果您认为该函数足够通用,请使用详细描述打开一个Jira问题。

标量函数

标量函数以零个、一个或多个值作为输入,并返回单个值作为结果。

比较函数

SQL函数 表函数 描述
value1 = value2 value1 === value2 如果value1等于value2,则返回TRUE;如果value1或value2为空,则返回UNKNOWN。
value1 <> value2 value1 !== value2 如果value1不等于value2,则返回TRUE;如果value1或value2为空,则返回UNKNOWN。
value1 > value2 value1 > value2 如果value1大于value2,则返回TRUE;如果value1或value2为空,则返回UNKNOWN。
value1 >= value2 value1 >= value2 如果value1大于或等于value2,则返回TRUE;如果value1或value2为空,则返回UNKNOWN。
value1 < value2 value1 < value2 如果value1小于value2,则返回TRUE;如果value1或value2为空,则返回UNKNOWN。
value1 <= value2 value1 <= value2 如果value1小于或等于value2,则返回TRUE;如果value1或value2为空,则返回UNKNOWN。
value IS NULL value.isNull 如果value为空,则返回TRUE。
value IS NOT NULL value.isNotNull 如果value不为空,则返回TRUE。
value1 IS DISTINCT FROM value2 N/A 如果两个值不同,则返回TRUE。此处将NULL值视为相同。例如,1 IS DISTINCT FROM NULL返回TRUE;NULL IS DISTINCT FROM NULL返回FALSE。
value1 IS NOT DISTINCT FROM value2 N/A 如果两个值相等,则返回TRUE。此处将NULL值视为相同。例如,1 IS NOT DISTINCT FROM NULL返回FALSE;NULL IS NOT DISTINCT FROM NULL返回TRUE。
value1 BETWEEN [ASYMMETRIC|SYMMETRIC] value2 AND value3 N/A 默认情况下(或使用ASYMMETRIC关键字),如果value1大于或等于value2且小于或等于value3,则返回TRUE。使用SYMMETRIC关键字时,如果value1在value2和value3之间(包括边界值),则返回TRUE。当value2或value3为空时,返回FALSE或UNKNOWN。例如,12 BETWEEN 15 AND 12返回FALSE;12 BETWEEN SYMMETRIC 15 AND 12返回TRUE;12 BETWEEN 10 AND NULL返回UNKNOWN;12 BETWEEN NULL AND 10返回FALSE;12 BETWEEN SYMMETRIC NULL AND 12返回UNKNOWN。
value1 NOT BETWEEN [ASYMMETRIC|SYMMETRIC] value2 AND value3 N/A 默认情况下(或使用ASYMMETRIC关键字),如果value1小于value2或大于value3,则返回TRUE。使用SYMMETRIC关键字时,如果value1不在value2和value3之间(包括边界值),则返回TRUE。当value2或value3为空时,返回TRUE或UNKNOWN。例如,12 NOT BETWEEN 15 AND 12返回TRUE;12 NOT BETWEEN SYMMETRIC 15 AND 12返回FALSE;12 NOT BETWEEN NULL AND 15返回UNKNOWN;12 NOT BETWEEN 15 AND NULL返回TRUE;12 NOT BETWEEN SYMMETRIC 12 AND NULL返回UNKNOWN。
string1 LIKE string2 [ESCAPE char] string1.like(string2) 如果string1与模式string2匹配,则返回TRUE;如果string1或string2为空,则返回UNKNOWN。如果需要,可以定义转义字符。目前还不支持转义字符。
string1 NOT LIKE string2 [ESCAPE char] N/A 如果string1不与模式string2匹配,则返回TRUE;如果string1或string2为空,则返回UNKNOWN。如果需要,可以定义转义字符。目前还不支持转义字符。
string1 SIMILAR TO string2 [ESCAPE char] string1.similar(string2) 如果string1与SQL正则表达式string2匹配,则返回TRUE;如果string1或string2为空,则返回UNKNOWN。如果需要,可以定义转义字符。目前还不支持转义字符。
string1 NOT SIMILAR TO string2 [ESCAPE char] N/A 如果string1不与SQL正则表达式string2匹配,则返回TRUE;如果string1或string2为空,则返回UNKNOWN。如果需要,可以定义转义字符。目前还不支持转义字符。
value1 IN (value2 [, value3]*) value1.in(value2) 如果value1存在于给定列表(value2、value3等)中,则返回TRUE。当列表(value2、value3等)包含NULL时,如果可以找到元素,则返回TRUE,否则返回UNKNOWN。如果value1为空,则始终返回UNKNOWN。例如,4 IN (1, 2, 3)返回FALSE;1 IN (1, 2, NULL)返回TRUE;4 IN (1, 2, NULL)返回UNKNOWN。
value1 NOT IN (value2 [, value3]*) N/A 如果value1不存在于给定列表(value2、value3等)中,则返回TRUE。当列表(value2、value3等)包含NULL时,如果可以找到value1,则返回FALSE,否则返回UNKNOWN。如果value1为空,则始终返回UNKNOWN。例如,4 NOT IN (1, 2, 3)返回TRUE;1 NOT IN (1, 2, NULL)返回FALSE;4 NOT IN (1, 2, NULL)返回UNKNOWN。
EXISTS (sub-query) N/A 如果子查询返回至少一行,则返回TRUE。仅在操作可以重写为连接和分组操作时支持。对于流式查询,该操作将被重写为连接和分组操作。根据输入行的不同数量,计算查询结果所需的状态可能会无限增长。请提供一个具有有效保留间隔的查询配置,以防止过多的状态大小。
value IN (sub-query) value1.in(TABLE) 如果value等于子查询返回的某一行,则返回TRUE。
value NOT IN (sub-query) N/A 如果value不等于子查询返回的任何一行,则返回TRUE。

逻辑函数

SQL函数 表函数 描述
boolean1 OR boolean2 BOOLEAN1 || BOOLEAN2 如果BOOLEAN1为TRUE或BOOLEAN2为TRUE,则返回TRUE。支持三值逻辑。例如,true || Null(BOOLEAN)返回TRUE。
boolean1 AND boolean2 BOOLEAN1 && BOOLEAN2 如果BOOLEAN1和BOOLEAN2都为TRUE,则返回TRUE。支持三值逻辑。例如,true && Null(BOOLEAN)返回UNKNOWN。
NOT boolean BOOLEAN.not(), not(BOOLEAN), or ‘!BOOLEAN’ (Scala only) 如果boolean为FALSE,则返回TRUE;如果boolean为TRUE,则返回FALSE;如果boolean为UNKNOWN,则返回UNKNOWN。
boolean IS FALSE BOOLEAN.isFalse 如果boolean为FALSE,则返回TRUE;如果boolean为TRUE或UNKNOWN,则返回FALSE。
boolean IS NOT FALSE BOOLEAN.isNotFalse 如果BOOLEAN为TRUE或UNKNOWN,则返回TRUE;如果BOOLEAN为FALSE,则返回FALSE。
boolean IS TRUE BOOLEAN.isTrue 如果BOOLEAN为TRUE,则返回TRUE;如果BOOLEAN为FALSE或UNKNOWN,则返回FALSE。
boolean IS NOT TRUE BOOLEAN.isNotTrue 如果boolean为FALSE或UNKNOWN,则返回TRUE;如果boolean为TRUE,则返回FALSE。
boolean IS UNKNOWN N/A 如果boolean为UNKNOWN,则返回TRUE;如果boolean为TRUE或FALSE,则返回FALSE。
boolean IS NOT UNKNOWN N/A 如果boolean为TRUE或FALSE,则返回TRUE;如果boolean为UNKNOWN,则返回FALSE。

算术函数

SQL函数 表函数 描述
numeric + NUMERIC numeric 返回NUMERIC。
numeric - numeric 返回负数NUMERIC
numeric1 + numeric2 NUMERIC1 + NUMERIC2 返回NUMERIC1加上NUMERIC2。
numeric1 - numeric2 NUMERIC1 - NUMERIC2 返回NUMERIC1减去NUMERIC2。
numeric1 * numberic2 NUMERIC1 * NUMERIC2 返回NUMERIC1乘以NUMERIC2。
numeric1 / numeric2 NUMERIC1 / NUMERIC2 返回NUMERIC1除以NUMERIC2。
numeric1 % numeric2 MOD(numeric1, numeric2) 返回numeric1除以numeric2的余数(模)。仅当numeric1为负数时结果为负数。
POWER(numeric1, numeric2) NUMERIC1.power(NUMERIC2) 返回NUMERIC1的NUMERIC2次幂。
ABS(numeric) numeric.abs() 返回numeric的绝对值。
SQRT(numeric) NUMERIC.sqrt() 返回NUMERIC的平方根。
LN(numeric) NUMERIC.ln() 返回NUMERIC的自然对数(以e为底)。
LOG10(numeric) numeric.log10() 返回numeric的以10为底的对数。
LOG2(numeric) numeric.log2() 返回numeric的以2为底的对数。
LOG(numeric2) LOG(numeric1, numeric2) NUMERIC1.log() NUMERIC1.log(NUMERIC2) 如果使用一个参数调用,则返回numeric2的自然对数。如果使用两个参数调用,则该函数返回numeric2以numeric1为底的对数。目前,numeric2必须大于0,numeric1必须大于1。
EXP(numeric) NUMERIC.exp() 返回e的numeric次幂。
CEIL(numeric) CEILING(numeric) NUMERIC.ceil() NUMERIC.ceiling() 向上舍入numeric,并返回不小于numeric的最小值。
FLOOR(numeric) NUMERIC.floor() 向下舍入numeric,并返回不大于numeric的最大值。
SIN(numeric) NUMERIC.sin() 返回numeric的正弦值。
SINH(numeric) NUMERIC.sinh() 返回numeric的双曲正弦值。返回值类型为DOUBLE。
COS(numeric) NUMERIC.cos() 返回numeric的余弦值。
TAN(numeric) NUMERIC.tan() 返回numeric的正切值。
TANH(numeric) NUMERIC.tanh() 返回numeric的双曲正切值。返回值类型为DOUBLE。
COT(numeric) NUMERIC.cot() 返回numeric的余切值。
ASIN(numeric) NUMERIC.asin() 返回numeric的反正弦值。
ACOS(numeric) NUMERIC.acos() 返回numeric的反余弦值。
ATAN(numeric) NUMERIC.atan() 返回numeric的反正切值。
ATAN2(numeric1, numeric2) atan2(NUMERIC1, NUMERIC2) 返回坐标(NUMERIC1,NUMERIC2)的反正切值。
COSH(numeric) NUMERIC.cosh() 返回numeric的双曲余弦值。返回值类型为DOUBLE。
DEGREES(numeric) NUMERIC.degrees() 返回以弧度表示的numeric的度数表示。
RADIANS(numeric) NUMERIC.radians() 返回以度数表示的numeric的弧度表示。
SIGN(numeric) NUMERIC.sign() 返回NUMERIC的符号。
ROUND(NUMERIC, INT) NUMERIC.round(INT) 将数字四舍五入为INT位小数。如果numeric1或integer2为空,则返回NULL。如果integer2为0,则结果没有小数点或小数部分。integer2可以为负数,以使值的小数点左侧的integer2位成为零。此函数还可以只传入一个numeric1参数,并且不设置integer2来使用。如果未设置Integer2,函数将像integer2为0一样截断。例如,42.324.truncate(2)为42.32,42.324.truncate()为42.0。

字符串函数

<
SQL函数 表函数 描述
string1 || string2
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BigDataMLApplication

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值