Flink CDC内置函数

本文将向您介绍可在Flink CDC数据摄入作业的Transform模块表达式中使用的内置函数。

内置函数

Flink CDC数据摄入作业提供了丰富的内置函数,可以直接在transform模块中的projectionfilter表达式中使用。

算术函数

函数

说明

numeric1 + numeric2

返回numeric1加上numeric2的值。

numeric1 - numeric2

返回numeric1减去numeric2的值。

numeric1 * numeric2

返回numeric1乘以numeric2的值。

numeric1 / numeric2

返回numeric1除以numeric2的值。

numeric1 % numeric2

返回numeric1numeric2取模的值。

ABS(numeric)

返回numeric的绝对值。

CEIL(numeric)

返回numeric向上取整的值。

FLOOR(numeric)

返回numeric向下取整的值。

ROUND(numeric, int)

返回numeric四舍五入到小数点后n位的值。

UUID()

生成一个全局唯一ID(UUID)字符串(例如“3d3c68f7-f608-473f-b60c-b0c44ad4cc4e”)。

使用RFC 4122 type 4方法伪随机生成。

时间函数

函数

说明

LOCALTIME

返回当前时区下的本地时间,返回类型为TIME(0)

LOCALTIMESTAMP

返回当前时区下的本地时间戳,返回类型为TIMESTAMP(3)

CURRENT_TIME

返回当前时区下的本地时间,与LOCAL_TIME相同。

CURRENT_DATE

返回当前时区下的本地日期。

CURRENT_TIMESTAMP

返回当前时区下的本地时间戳。返回类型为TIMESTAMP_LTZ(3)

NOW()

返回当前时区下的本地时间戳,与CURRENT_TIMESTAMP相同。

DATE_FORMAT(timestamp, string)

将传入的时间戳按指定的格式化字符串string进行格式化。

说明

格式化字符串与Java中的SimpleDateFormat格式兼容。

TIMESTAMP_ADD(timeintervalunit, interval, timepoint)

计算timepoint加上interval(单位timeintervalunit)之后的时间点。

timeintervalunit可被指定为SECOND、MINUTE、HOUR、DAY、MONTHYEAR。

TIMESTAMP_DIFF(timepointunit, timepoint1, timepoint2)

计算timepoint1timepoint2之间差距多少timepointunit单位。

timepointunit可被指定为SECOND、MINUTE、HOUR、DAY、MONTHYEAR。

TO_DATE(string1[, string2])

将传入的日期字符串string1string2指定的格式转化为DATE类型。

说明

在不指定格式化字符串string2时,默认采用yyyy-MM-dd格式。

TO_TIMESTAMP(string1[, string2])

将传入的时间戳字符串string1string2指定的格式转化为不带时区信息的TIMESTAMP类型。

说明

在不指定格式化字符串string2时,默认采用yyyy-MM-ddHH:mm:ss格式。

FROM_UNIXTIME(numeric[, string])

将第一个参数作为UTC时区下1970-01-01 00:00:00后经过的秒数转换为时间戳,并根据第二个参数,返回一个指定格式的时间戳字符串。

说明

在不指定格式化字符串string时,默认采用yyyy-MM-ddHH:mm:ss格式。

UNIX_TIMESTAMP()

返回当前时间下的UNIX时间戳秒数。

UNIX_TIMESTAMP(string1[, string2])

将给定的日期时间字符串string1转换为另一个日期时间格式string2。

说明

在进行projectionfilter表达式求值时,可以保证其中每个子表达式所得到的时间点都一致。例如,NOW() AS t1, NOW() AS t2, NOW() AS t3得到的t1t2t3一定对应同一个时间戳,无论其求值时间和顺序如何。

字符串函数

函数

说明

string1 || string2

返回string1string2拼接而成的字符串。

说明

此运算符与逻辑或运算符不同。

CHAR_LENGTH(string)

返回string字符串中的字符数。

UPPER(string)

返回string的大写形式字符串。

LOWER(string)

返回string的小写形式字符串。

TRIM(string1)

删除string两侧的空白字符。

REGEXP_REPLACE(string1, string2, string3)

string1中所有满足string2模式的子串替换为string3。

例如,REGEXP_REPLACE('foobar', 'oo|ar', '__')求值的结果为 f__b__

SUBSTRING(string FROM integer1 [ FOR integer2 ])

返回string从第integer1到第integer2个字符的子串。

说明

在不提供FOR integer2语句时,默认提取到字符串尾部。

CONCAT(string1, string2,…)

返回将string1、string2、…拼接在一起形成的新字符串。

例如,CONCAT('AA', 'BB', 'CC')求值的结果为AABBCC

类型转换函数

您可以使用 CAST(<表达式> AS <类型>)语法进行显式强制类型转换。目前支持以下转换路径:

源类型

目标类型

说明

任何

VARCHAR

重要

目前不可使用 STRING 作为目的类型,请使用等价的 VARCHAR 类型。

任何类型的字段均可被转换为字符串。

NUMERIC

STRING

BOOLEAN

任何非数字0FALSE字符串的字面量均会被转换为TRUE。

NUMERIC

STRING

TINYINT

结果会被截断到-128127范围内。

NUMERIC

STRING

SMALLINT

结果会被截断到-3276832767范围内。

NUMERIC

STRING

INTEGER

结果会被截断到-21474836482147483647范围内。

NUMERIC

STRING

BIGINT

结果会被截断到-92233720368547758089223372036854775807范围内。

NUMERIC

STRING

FLOAT

NUMERIC

DOUBLE

NUMERIC

DECIMAL

STRING

TIMESTAMP_TZ

TIMESTAMP_LTZ

TIMESTAMP

字符串必须为合法的ISO_LOCAL_DATE_TIME格式。

比较函数

说明

除非特别说明,否则以下内置函数在输入参数包含NULL时均返回NULL。

函数

说明

value1 = value2

如果value1等于value2,则返回TRUE;否则返回FALSE。

value1 <> value2

如果value1不等于value2,则返回TRUE;否则返回FALSE。

value1 > value2

如果value1大于value2,则返回TRUE;否则返回FALSE。

value1 >= value2

如果value1大于或等于value2,则返回TRUE;否则返回FALSE。

value1 < value2

如果value1小于value2,则返回TRUE;否则返回FALSE。

value1 <= value2

如果value1小于或等于value2,则返回TRUE;否则返回FALSE。

value IS NULL

如果valueNULL,则返回TRUE;否则返回FALSE。

value IS NOT NULL

如果value不是NULL,则返回TRUE;否则返回FALSE。

value1 BETWEEN value2 AND value3

如果value1的值介于value2value3之间,则返回TRUE;否则返回FALSE。

value1 NOT BETWEEN value2 AND value3

如果value1的值并非介于value2value3之间,则返回TRUE;否则返回FALSE。

string1 LIKE string2

如果string1的值与string2定义的模式匹配,则返回TRUE;否则返回FALSE。

string1 NOT LIKE string2

如果string1的值与string2定义的模式不匹配,则返回TRUE;否则返回FALSE。

value1 IN (value2 [, value3]* )

如果value1的值存在于[value2, value3, ...]列表中,则返回TRUE;否则返回FALSE。

value1 NOT IN (value2 [, value3]* )

如果value1的值不存在于[value2, value3, ...]列表中,则返回TRUE;否则返回FALSE。

逻辑函数

函数

说明

boolean1 OR boolean2

如果boolean1boolean2至少有一个为TRUE,则返回TRUE。

boolean1 AND boolean2

如果boolean1boolean2均为TRUE,则返回TRUE。

NOT boolean

如果booleanTRUE,则返回FALSE;如果booleanFALSE,则返回TRUE。

boolean IS FALSE

如果booleanTRUE,则返回FALSE;如果booleanFALSE,则返回TRUE。

boolean IS NOT FALSE

如果booleanTRUE,则返回TRUE;如果booleanFALSE,则返回FALSE。

boolean IS TRUE

如果booleanTRUE,则返回TRUE;如果booleanFALSE,则返回FALSE。

boolean IS NOT TRUE

如果booleanTRUE,则返回FALSE;如果booleanFALSE,则返回TRUE。

条件函数

函数

说明

CASE value WHEN value1_1 [, value1_2]* THEN RESULT1 (WHEN value2_1 [, value2_2 ]* THEN result_2)* (ELSE result_z) END

依次检查value值是否等于WHEN子句给出的值,并返回第一个相等子句的RESULT值。

如果没有任何子句满足条件,则返回ELSE子句指定的值。如果没有指定ELSE子句,则返回NULL。

CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END

依次检查value值是否满足每个WHEN子句给出的条件,并返回第一个满足条件子句的RESULT值。

如果没有任何子句满足条件,则返回ELSE子句指定的值。如果没有指定ELSE子句,则返回NULL。

COALESCE(value1 [, value2]*)

返回[value1、value2、……]列表中第一个不为NULL的元素。如果列表中所有元素均为NULL,则返回NULL。

IF(condition, true_value, false_value)

如果condition子句对应的条件为真,则返回true_value;否则返回false_value。