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 <