内置函数差异对比

最近更新时间:2023-06-21 15:21:55

我的收藏
流计算 Oceanus 在主流社区的基础上,补充并优化了部分函数。已注册函数如下表所示。
内置函数
流计算 Oceanus 函数定义
Flink 社区函数定义
注意点
unbase64
unbase64(string)
-
流计算 Oceanus:对 base64的字符串解码,输入 string, 输出 Array[Byte]。
decode
DECODE(binary,charset), DECODE(binary)
DECODE(binary, string)
流计算 Oceanus:DECODE(binary)默认使用 charset="UTF-8"。
Flink 社区:如果任一参数为空,则返回为空。
split
SPLIT(string, separator)
-
流计算 Oceanus:将 string 表示的字符串以 separator 指定的分隔符拆分,并返回一个 Row 类型的对象。
get_row_field_str
GET_ROW_FIELD_STR(row, index)
-
流计算 Oceanus:获取某个 Row 类型对象 row 的第 index 列的值,index 从0开始计数。返回值为字符串 VARCHAR 类型。
get_row_arity
GET_ROW_ARITY(row)
-
流计算 Oceanus:获取某个 Row 类型对象 row 的列数。
can_cast_to
CAN_CAST_TO(str, type)
-
流计算 Oceanus:判断 str 字符串是否可以被转换为 type 指定的类型,返回值为布尔型。返回值可以在 CASE 语句中作为条件使用。例如 CAN_CAST_TO('123456', 'INTEGER') 则返回 True,而 CAN_CAST_TO('a145', 'DOUBLE') 则返回 False。
date_format_simple
DATE_FORMAT_SIMPLE(timestamp, simple_format)
-
计算 Oceanus:将 BIGINT(Long)类型的字段(毫秒为单位的 Unix 时间戳)以 Java 的 SimpleDateFormat 支持的时间格式化模板转为字符串形式。例如 DATE_FORMAT_SIMPLE(unix_ts, 'yyyy-MM-dd HH:mm:ss') 会返回 "2020-01-01 12:13:14" 这样格式的字符串。传入 Long,返回 String。
to_timestamp
TO_TIMESTAMP(string, simple_format)
TO_TIMESTAMP(string1[, string2])
流计算 Oceanus:以 Java 的 SimpleDateFormat 支持的时间格式化模板 simple_format,将 string 字符串格式化为 Timestamp 类型的时间戳。默认以东八区为准。 例如 TO_TIMESTAMP(ts, 'yyyy-MM-dd HH:mm:ss')。传入 string,返回 Timestamp。
Flink 社区:一致
timestamp_to_long
TIMESTAMP_TO_LONG(timestamp), TIMESTAMP_TO_LONG(timestamp, mode)
-
流计算 Oceanus:将某个 TIMESTAMP 类型的参数转为 BIGINT (Long) 类型的值。若 mode 为 'SECOND',则转为以秒来计数的 Unix 时间戳,例如1548403425。若 mode 为其他值或者省略,则转为以毫秒计数的 Unix 时间戳,例如1548403425512。
get_tumble_start
get_tumble_start(timestamp,windowSize), get_tumble_start(timestamp,offset,windowSize)
-
流计算 Oceanus:获取窗口的起始时间,默认 offset = 0。
if_null_str
IF_NULL_STR(str, defaultValue)
-
流计算 Oceanus:如果 str 不为 NULL,则返回 str 本身;如果 str 为 NULL,则返回第二项参数 defaultValue。
get_json_object
GET_JSON_OBJECT(json_str, path_str)
-
流计算 Oceanus:获取嵌套JSON,示例可参见 文档
split_index
SPLIT_INDEX(string, separator, index)
SPLIT_INDEX(string1, string2, integer1)
将 string 表示的字符串以 separator 指定的分隔符拆分,并获取第 index 项,返回值为字符串 VARCHAR 类型。其中 index 从0开始计数。
流计算 Oceanus:如果 string == null 或者 separator == null 则返回 string。
Flink 社区: 其中三项如果有任一项参数为空则返回 null。
first_str
FIRST_VALUE(expression)
FIRST_VALUE(expression)
流计算 Oceanus:聚合函数,返回一系列数据中,第一个数据。
Flink 社区:一致。
last_str
LAST_VALUE(expression)
LAST_VALUE(expression)
流计算 Oceanus:聚合函数,返回一系列数据中,最后一个数据。
Flink 社区:一致。
explode
EXPLODE(inputStr, separator)
-
流计算 Oceanus:将某个字符串分割为一张有多行的临时表。这个函数属于 Table Function,需要使用 LATERAL TABLE ( ) 关键字来引用此动态生成的临时表并作为 JOIN 条件的右表。