流计算 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) | - | |
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 条件的右表。 |