说明
当前版本可用的函数列表,
举例
| name | type | desc | example |
|---|---|---|---|
| AesDecrypt | udf | aes对称解密, AES_DECRYPT(str, key) | |
| aes_decrypt | udf | aes对称解密, AES_DECRYPT(str, key) | |
| aesDecrypt | udf | aes对称解密, AES_DECRYPT(str, key) | |
| AesEncrypt | udf | aes对称加密 TODO, AES_ENCRYPT(str, key) | |
| aes_encrypt | udf | aes对称加密 TODO, AES_ENCRYPT(str, key) | |
| aesEncrypt | udf | aes对称加密 TODO, AES_ENCRYPT(str, key) | |
| abs | udf | 指定值强转浮点数并取绝对值 | abs(-3.14) 返回 3.14 |
| acos | udf | acos 反余弦 | acos(0.5) 返回 1.047197…(弧度) |
| add | udf | 多个数相加 | add(1, 2, 3, 4) 返回 10 |
| addDays | udf | 增加指定天 | addDays(date, 1) |
| add_days | udf | 增加指定天 | addDays(date, 1) |
| addHours | udf | 增加指定小时 | addHours(date, 1) |
| add_hours | udf | 增加指定小时 | addHours(date, 1) |
| addMinutes | udf | 增加指定分钟 | addMinutes(date, 1) |
| add_minutes | udf | 增加指定分钟 | addMinutes(date, 1) |
| addMonths | udf | 增加指定月 | addMonths(date, 1) |
| add_months | udf | 增加指定月 | addMonths(date, 1) |
| addSeconds | udf | 增加指定秒钟 | addSeconds(date, 1) |
| add_seconds | udf | 增加指定秒钟 | addSeconds(date, 1) |
| addWeeks | udf | 增加指定周 | addWeeks(date, 1) |
| add_weeks | udf | 增加指定周 | addWeeks(date, 1) |
| addYears | udf | 增加指定年 | addYears(date, 1) |
| add_years | udf | 增加指定年 | addYears(date, 1) |
| argsSize | udf | 计算参数个数 | argsSize(‘a’, ‘b’) 返回2 |
| args_size | udf | 计算参数个数 | argsSize(‘a’, ‘b’) 返回2 |
| array | udf | 构造数组 | array(1, ‘a’, 3.14) 返回 [1, a, 3.14] |
| arrayAppend | udf | 向数组结尾追加值 | arrayAppend([1,2,3], 4) 返回 [1, 2, 3, 4] |
| array_append | udf | 向数组结尾追加值 | arrayAppend([1,2,3], 4) 返回 [1, 2, 3, 4] |
| arraySize | udf | 获取数组/集合的大小,null 返回 0, 其他返回 1 | arraySize([1,2,3]) 返回 3 |
| array_size | udf | 获取数组/集合的大小,null 返回 0, 其他返回 1 | arraySize([1,2,3]) 返回 3 |
| arrayLength | udf | 获取数组/集合的大小,null 返回 0, 其他返回 1 | arraySize([1,2,3]) 返回 3 |
| array_length | udf | 获取数组/集合的大小,null 返回 0, 其他返回 1 | arraySize([1,2,3]) 返回 3 |
| array_to_string | udf | 使用指定字符将数组连接为字符串 | array_to_string(array_expression, delimiter) (pgsql) |
| arrayToString | udf | 使用指定字符将数组连接为字符串 | array_to_string(array_expression, delimiter) (pgsql) |
| asin | udf | asin 反正弦 | asin(0.5) 返回 0.523598…(弧度) |
| atan | udf | atan 反正切 | atan(1) 返回 0.785398…(弧度) |
| base64 | udf | 返回base64 (根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行) | base64(‘sybn’) |
| to_base64 | udf | 返回base64 (根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行) | base64(‘sybn’) |
| toBase64 | udf | 返回base64 (根据RFC822规定,BASE64Encoder编码每76个字符,还需要加上一个回车换行) | base64(‘sybn’) |
| batchReplace | udf | 将逗号分隔的 ID 列表转换为中文名称 | batchReplace(‘1,2,3’, ‘x’, x+1) |
| batch_replace | udf | 将逗号分隔的 ID 列表转换为中文名称 | batchReplace(‘1,2,3’, ‘x’, x+1) |
| calc | udf | 四则运算 | calc(‘1 + 2 * 3’) 返回 7 |
| cast | udf | 强转参数为指定类型, | cast(‘1’ as INT) cast(‘1’, INT) |
| tryCast | udf | 强转参数为指定类型, | cast(‘1’ as INT) cast(‘1’, INT) |
| try_cast | udf | 强转参数为指定类型, | cast(‘1’ as INT) cast(‘1’, INT) |
| coalesce | udf | 获取第一个非 null 值 | coalesce(null, ‘hello’, ‘world’) 返回 hello |
| compare | udf | 比较 2 个值的大小 (两个值的类型可以不同) | compare(5, 3) 返回 1 compare(3, 5) 返回 -1 compare(5, 5) 返回 0 |
| concat | udf | 字符串连接 (只要有一个值是 null 则返回 null) | |
| concatWs | udf | 字符串连接,只要有一个字符串不是NULL,就不会返回NULL, 第一个参数是分隔符 | |
| concat_ws | udf | 字符串连接,只要有一个字符串不是NULL,就不会返回NULL, 第一个参数是分隔符 | |
| conv | udf | 进制转换 | conv(‘FF’, 16, 10) |
| convert | udf | 格式转换, | convert(‘1’ as INT) convert(‘1’, INT) |
| cos | udf | cos 余弦 | cos(0) 返回 1.0 |
| cot | udf | cot 余切 | cot(0.785398) 返回 1.0 |
| curdate | udf | 今天零点 | curdate() 返回 2024-01-15 00:00:00 |
| curl | udf | 发起curl请求, 并获取其返回值 | |
| curlHeadContentLength | udf | 发起curl请求, 并获取其返回值大小. (只从请求头获取, 如果请求头没有大小则尝试下载这个文件, 如果下载到 256 KB 依然没有到文件结尾, 则放弃下载) | |
| curl_head_content_length | udf | 发起curl请求, 并获取其返回值大小. (只从请求头获取, 如果请求头没有大小则尝试下载这个文件, 如果下载到 256 KB 依然没有到文件结尾, 则放弃下载) | |
| dateAdd | udf | 增加指定时间 | |
| date_add | udf | 增加指定时间 | |
| addDate | udf | 增加指定时间 | |
| add_date | udf | 增加指定时间 | |
| dateFormat | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| date_format | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| fromUnixtime | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| from_unixtime | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| dateToString | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| date_to_string | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| dateToStr | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| date_to_str | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| formatDate | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| format_date | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| formatDateTime | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| format_date_time | udf | 时间格式化(兼容mysql/java风格的时间模板) | |
| dateSub | udf | 减去指定时间 | |
| date_sub | udf | 减去指定时间 | |
| subDate | udf | 减去指定时间 | |
| sub_date | udf | 减去指定时间 | |
| day | udf | 获得该时日是当月第几天,1-31, null 返回 -1 | day(‘2020-02-12’) 返回 12 |
| dayOfMonth | udf | 获得该时日是当月第几天,1-31, null 返回 -1 | day(‘2020-02-12’) 返回 12 |
| day_of_month | udf | 获得该时日是当月第几天,1-31, null 返回 -1 | day(‘2020-02-12’) 返回 12 |
| toDayOfMonth | udf | 获得该时日是当月第几天,1-31, null 返回 -1 | day(‘2020-02-12’) 返回 12 |
| to_day_of_month | udf | 获得该时日是当月第几天,1-31, null 返回 -1 | day(‘2020-02-12’) 返回 12 |
| dayOfWeek | udf | 返回参数是星期几 参数不是日期=返回 -1 1=周日;2=周一;7=周六 ODBC 标准 | dayOfWeek(‘2020-02-12’) 返回 4 (星期三) |
| day_of_week | udf | 返回参数是星期几 参数不是日期=返回 -1 1=周日;2=周一;7=周六 ODBC 标准 | dayOfWeek(‘2020-02-12’) 返回 4 (星期三) |
| toDayOfWeek | udf | 返回参数是星期几 参数不是日期=返回 -1 1=周日;2=周一;7=周六 ODBC 标准 | dayOfWeek(‘2020-02-12’) 返回 4 (星期三) |
| to_day_of_week | udf | 返回参数是星期几 参数不是日期=返回 -1 1=周日;2=周一;7=周六 ODBC 标准 | dayOfWeek(‘2020-02-12’) 返回 4 (星期三) |
| dayOfYear | udf | 返回 date 是当年第几天,范围:1-366 | dayOfYear(‘2020-02-12’) 返回 43 |
| day_of_year | udf | 返回 date 是当年第几天,范围:1-366 | dayOfYear(‘2020-02-12’) 返回 43 |
| toDayOfYear | udf | 返回 date 是当年第几天,范围:1-366 | dayOfYear(‘2020-02-12’) 返回 43 |
| to_day_of_year | udf | 返回 date 是当年第几天,范围:1-366 | dayOfYear(‘2020-02-12’) 返回 43 |
| divide | udf | 多个数相除 (除零返回零) | divide(100, 5, 2) 返回 10.000000000000000 |
| divisionPercent | udf | 两个数相除后显示为百分比(默认格式0.00%) | |
| division_percent | udf | 两个数相除后显示为百分比(默认格式0.00%) | |
| dubboInvoke | udf | 测试指定 dubbo 服务: dubboInvoke(zk或dubbo地址, 类名.方法名(参数) [, 返回类型]) | |
| dubbo_invoke | udf | 测试指定 dubbo 服务: dubboInvoke(zk或dubbo地址, 类名.方法名(参数) [, 返回类型]) | |
| dubboList | udf | 查找指定 dubbo 服务: dubboList(zk或dubbo地址, 类名regex) | |
| dubbo_list | udf | 查找指定 dubbo 服务: dubboList(zk或dubbo地址, 类名regex) | |
| execSql | udf | (实验性功能) 用于循环执行某些命令 | execSql(‘SELECT * FROM table WHERE id = ‘ + id) |
| exec_sql | udf | (实验性功能) 用于循环执行某些命令 | execSql(‘SELECT * FROM table WHERE id = ‘ + id) |
| findInSet | udf | 逗号分隔参数二,然后寻找参数一的位置,找不到则返回 0 | findInSet(‘b’, ‘a,b,c,d’) 返回 2 |
| find_in_set | udf | 逗号分隔参数二,然后寻找参数一的位置,找不到则返回 0 | findInSet(‘b’, ‘a,b,c,d’) 返回 2 |
| firstDay | udf | 返回参数当月第一天的时间格式 | firstDay(‘2020-02-12’) 返回 2020-02-01 |
| first_day | udf | 返回参数当月第一天的时间格式 | firstDay(‘2020-02-12’) 返回 2020-02-01 |
| floor | udf | 向0取整 | |
| fromDays | udf | 根据公元元年至参数时间之间的天数返回日期 (与 to_days 函数相反) | fromDays(737835) 返回 2020-02-12 |
| from_days | udf | 根据公元元年至参数时间之间的天数返回日期 (与 to_days 函数相反) | fromDays(737835) 返回 2020-02-12 |
| from_base64 | udf | 解码base64, 返回 byte[] (忽略换行符) | |
| fromBase64 | udf | 解码base64, 返回 byte[] (忽略换行符) | |
| from_base64_to_str | udf | 解码base64, 返回 string (忽略换行符) | |
| fromBase64ToStr | udf | 解码base64, 返回 string (忽略换行符) | |
| greatest | udf | 返回最大参数 | greatest(1,3,5,7,9,0) 返回 9 |
| hex | udf | hex 对象转16进制 | |
| hour | udf | 返回小时,范围:0~23 | hour(‘2020-02-12 14:30:45’) 返回 14 |
| toHour | udf | 返回小时,范围:0~23 | hour(‘2020-02-12 14:30:45’) 返回 14 |
| to_hour | udf | 返回小时,范围:0~23 | hour(‘2020-02-12 14:30:45’) 返回 14 |
| humpToLine | udf | 驼峰转下划线 | humpToLine(‘userName’) 返回 user_name |
| hump_to_line | udf | 驼峰转下划线 | humpToLine(‘userName’) 返回 user_name |
| if | udf | 根据参数1是否为true,返回参数2或者参数3 | if(exp, trueVal, falseVal) |
| ifNull | udf | 根据参数 1 是否为 null,返回参数 1 或者参数 2 | ifNull(null, ‘default’) 返回 default ifNull(‘value’, ‘default’) 返回 value |
| if_null | udf | 根据参数 1 是否为 null,返回参数 1 或者参数 2 | ifNull(null, ‘default’) 返回 default ifNull(‘value’, ‘default’) 返回 value |
| nvl | udf | 根据参数 1 是否为 null,返回参数 1 或者参数 2 | ifNull(null, ‘default’) 返回 default ifNull(‘value’, ‘default’) 返回 value |
| instr | udf | 字符串查找 | instr(‘hello world’, ‘world’) 返回 7 |
| ipAddrLow | udf | 获取指定网段的ip开头, 用于IP归属地等运算 | ipAddrLow(‘10.9.8.7/24’) 返回 ‘10.9.8.1’ |
| ip_addr_low | udf | 获取指定网段的ip开头, 用于IP归属地等运算 | ipAddrLow(‘10.9.8.7/24’) 返回 ‘10.9.8.1’ |
| isIpInSubnet | udf | 判断指定地址是否属于指定网段 | isIpInSubnet(‘10.9.8.7’, ‘10.9.8.7/24,10.10.10.7/24’) 返回 true |
| is_ip_in_subnet | udf | 判断指定地址是否属于指定网段 | isIpInSubnet(‘10.9.8.7’, ‘10.9.8.7/24,10.10.10.7/24’) 返回 true |
| isMobile | udf | 判断是不是合法手机号 (130~190 开头的 11 位整数) | isMobile(‘13800138000’) 返回 true |
| is_mobile | udf | 判断是不是合法手机号 (130~190 开头的 11 位整数) | isMobile(‘13800138000’) 返回 true |
| isPortOpen | udf | 检查某个服务器端口是否可达. | isPortOpen(‘www.baidu.com’, 80, ‘80端口可访问’, ‘80端口不可访问’) isPortOpen(‘www.baidu.com’, 80) 默认返回: true, false |
| is_port_open | udf | 检查某个服务器端口是否可达. | isPortOpen(‘www.baidu.com’, 80, ‘80端口可访问’, ‘80端口不可访问’) isPortOpen(‘www.baidu.com’, 80) 默认返回: true, false |
| javaBeanToSql | udf | java bean 对象 转 sql | |
| java_bean_to_sql | udf | java bean 对象 转 sql | |
| java_substring | udf | 字符串裁剪,(从0开始算) | |
| javaSubstring | udf | 字符串裁剪,(从0开始算) | |
| jsonValid | udf | 验证json合法性, 返回1那么JSON是有效的;返回0则表示JSON无效。 | |
| json_valid | udf | 验证json合法性, 返回1那么JSON是有效的;返回0则表示JSON无效。 | |
| json_contains | udf | 检查JSON文档是否包含指定的值或键 | json_contains(data, ‘x’, ‘$.name’) |
| jsonContains | udf | 检查JSON文档是否包含指定的值或键 | json_contains(data, ‘x’, ‘$.name’) |
| json_extract | udf | 从 json 中获取指定值 JSON_EXTRACT(data, ‘$.name’) | |
| jsonExtract | udf | 从 json 中获取指定值 JSON_EXTRACT(data, ‘$.name’) | |
| json_keys | udf | 获取 json keys | json_keys(‘{“a”:1,”b”:2}’) 返回 [a, b] |
| jsonKeys | udf | 获取 json keys | json_keys(‘{“a”:1,”b”:2}’) 返回 [a, b] |
| json_length | udf | 获取 json length | json_length(‘[1,2,3]’) 返回 3 |
| jsonLength | udf | 获取 json length | json_length(‘[1,2,3]’) 返回 3 |
| json_query | udf | 从 json 中获取指定值 | json_query(data, ‘$.name’) |
| jsonQuery | udf | 从 json 中获取指定值 | json_query(data, ‘$.name’) |
| json_value | udf | 从 json 中获取指定值 | json_value(data, ‘$.name’, ‘INT’) |
| jsonValue | udf | 从 json 中获取指定值 | json_value(data, ‘$.name’, ‘INT’) |
| lastDay | udf | 返回参数当月最后一天的 0 点 | lastDay(‘2020-02-12’) 返回 2020-02-29 |
| last_day | udf | 返回参数当月最后一天的 0 点 | lastDay(‘2020-02-12’) 返回 2020-02-29 |
| least | udf | 返回函数括号里的最小值 | least(1,3,5,7,9,0) 返回 0 |
| left | udf | 从左边截取字符 | |
| length | udf | 返回参数转字符串后的长度 (每个中文算多个字节), 如果入参是数组或集合类,则返回其大小 | length(‘你好’) 返回 6 (UTF-8 编码) |
| lineToHump | udf | 下划线转驼峰 | lineToHump(‘user_name’) 返回 userName |
| line_to_hump | udf | 下划线转驼峰 | lineToHump(‘user_name’) 返回 userName |
| locate | udf | 返回 substr 在字符串 str 的第一个出现的位置 | locate(‘world’, ‘hello world’) 返回 7 locate(‘l’, ‘hello’, 3) 返回 4 |
| log | udf | 对数运算 (自然对数) | log(10) 返回 2.302585… |
| lower | udf | 返回参数转字符串后的小写格式 | lower(‘HELLO’) 返回 hello |
| toLowerCase | udf | 返回参数转字符串后的小写格式 | lower(‘HELLO’) 返回 hello |
| to_lower_case | udf | 返回参数转字符串后的小写格式 | lower(‘HELLO’) 返回 hello |
| lpad | udf | 从左边对字符串使用指定的字符进行填充(一中文算多个字节) | |
| masking | udf | 数据脱敏工具,将数据的全部或部分替换为星号,不保证返回值与输入值长度一致 | masking(‘13800138000’) 返回 138**8000 |
| maxDateValue | udf | 求所有参数中的最大时间 | |
| max_date_value | udf | 求所有参数中的最大时间 | |
| maxNumberValue | udf | 求所有参数中的最大数字 | maxNumberValue(1, 5, 3, 9, 2) 返回 9 |
| max_number_value | udf | 求所有参数中的最大数字 | maxNumberValue(1, 5, 3, 9, 2) 返回 9 |
| maxValue | udf | 求所有参数中的最大值 | maxValue(‘a’, ‘c’, ‘b’) 返回 c |
| max_value | udf | 求所有参数中的最大值 | maxValue(‘a’, ‘c’, ‘b’) 返回 c |
| md5 | udf | 返回参数32位MD5 | |
| md5_16 | udf | 返回参数16位MD5 | |
| md516 | udf | 返回参数16位MD5 | |
| minDateValue | udf | 求所有参数中的最小时间 | |
| min_date_value | udf | 求所有参数中的最小时间 | |
| minNumberValue | udf | 求所有参数中的最小数字 | minNumberValue(5, 3, 9, 1, 7) 返回 1 |
| min_number_value | udf | 求所有参数中的最小数字 | minNumberValue(5, 3, 9, 1, 7) 返回 1 |
| minValue | udf | 求所有参数中的最小值 | minValue(‘c’, ‘a’, ‘b’) 返回 a |
| min_value | udf | 求所有参数中的最小值 | minValue(‘c’, ‘a’, ‘b’) 返回 a |
| minute | udf | 返回分钟,范围:0~23 | minute(‘2020-02-12 14:30:45’) 返回 30 |
| mod | udf | 取余 | |
| month | udf | 获得指定时间的月份,mysql 风格,null 返回 -1, 一月返回 1 | month(‘2020-02-12’) 返回 2 |
| toMonth | udf | 获得指定时间的月份,mysql 风格,null 返回 -1, 一月返回 1 | month(‘2020-02-12’) 返回 2 |
| to_month | udf | 获得指定时间的月份,mysql 风格,null 返回 -1, 一月返回 1 | month(‘2020-02-12’) 返回 2 |
| multiply | udf | 多个数相乘 | multiply(2, 3, 4) 返回 24 |
| notEmptyList | udf | 指定值如果为空则返回默认数组 | notEmptyList(x, ‘1,2,3’) notEmptyList(x, ‘1’, ‘2’, ‘3’) |
| not_empty_list | udf | 指定值如果为空则返回默认数组 | notEmptyList(x, ‘1,2,3’) notEmptyList(x, ‘1’, ‘2’, ‘3’) |
| now | udf | 当前时间 | now() 返回 2026-03-30 19:26:39 |
| nullIf | udf | 如果两个指定的表达式相等,就返回 NULL 值,否则返回第一个值 | nullIf(5, 5) 返回 null nullIf(5, 3) 返回 5 |
| null_if | udf | 如果两个指定的表达式相等,就返回 NULL 值,否则返回第一个值 | nullIf(5, 5) 返回 null nullIf(5, 3) 返回 5 |
| ori_decode | udf | 私加解密函数 | |
| oriDecode | udf | 私加解密函数 | |
| ori_encode | udf | 私有解密函数 | |
| oriEncode | udf | 私有解密函数 | |
| parseSqlToTables | udf | 解析sql并从中获取表名(只能解析完整的sql) | |
| parse_sql_to_tables | udf | 解析sql并从中获取表名(只能解析完整的sql) | |
| parse_url | udf | 解析 url 并返回其指定部分, 支持 HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO | |
| parseUrl | udf | 解析 url 并返回其指定部分, 支持 HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO | |
| pi | udf | 圆周率 (3.14159265358979323846) | pi() 返回 3.14159265358979323846 |
| ping | udf | 检查某个服务器端口是否可达. 默认: 成功返回 ping 毫秒数, 失败返回 null. 本方法与操作系统的 ping, tcping 逻辑类似但不完全相同 | ping(‘www.baidu.com’, ‘ping成功’, ‘ping失败’, 1000) ping(‘www.baidu.com:8443’) |
| position | udf | 返回子字符串的位置(不区分大小写, 从1开始, 找不到返回0) | |
| pow | udf | 求幂 | |
| power | udf | 幂运算 (a 的 b 次方) | power(2, 3) 返回 8 |
| province | udf | 整理中国省份名,返回省份简称,用于渲染 echarts | province(‘广东省’) 返回 广东 |
| provinceCity | udf | 整理中国省份城市名,返回简称,用于渲染 echarts 等场景 | provinceCity(‘河北省石家庄市’) 返回 河北省 |
| province_city | udf | 整理中国省份城市名,返回简称,用于渲染 echarts 等场景 | provinceCity(‘河北省石家庄市’) 返回 河北省 |
| quarter | udf | 返回当前月是第几个季度 范围:1-4 | quarter(‘2020-02-12’) 返回 1 |
| toQuarter | udf | 返回当前月是第几个季度 范围:1-4 | quarter(‘2020-02-12’) 返回 1 |
| to_quarter | udf | 返回当前月是第几个季度 范围:1-4 | quarter(‘2020-02-12’) 返回 1 |
| rand | udf | 获取随机数,0~1 之间 | rand() 返回 0.123456789 |
| replace | udf | 字符串替换(普通文本替换) | |
| replaceAll | udf | 字符串替换(正则替换) | |
| replace_all | udf | 字符串替换(正则替换) | |
| regexpReplace | udf | 字符串替换(正则替换) | |
| regexp_replace | udf | 字符串替换(正则替换) | |
| replaceEquals | udf | 字符串替换(只有全量匹配才替换) | |
| replace_equals | udf | 字符串替换(只有全量匹配才替换) | |
| reverse | udf | 返回参数转字符串后的反转格式 | reverse(‘hello’) 返回 olleh |
| right | udf | 从右边截取字符 | |
| root | udf | 开 N 次方运算 (第一个参数为被开方数,第二个参数为开方次数,默认为 2) | root(16, 2) 返回 4.0 root(27, 3) 返回 3.0 |
| round | udf | 四舍五入, 向上(正无穷)取整 | |
| rpad | udf | 从右边对字符串使用指定的字符进行填充(一中文算多个字节) | |
| runtimeName | udf | 当前服务器信息 (PID@机器名:内网 IP:端口号), IP 地址和端口号可能获取不到 | runtimeName() 返回 12345@server1:192.168.1.100:8080 |
| runtime_name | udf | 当前服务器信息 (PID@机器名:内网 IP:端口号), IP 地址和端口号可能获取不到 | runtimeName() 返回 12345@server1:192.168.1.100:8080 |
| second | udf | 返回秒数,范围:0~59 | second(‘2020-02-12 14:30:45’) 返回 45 |
| serverProperty | udf | 获取环境变量 | serverProperty(‘PATH’) 返回 PATH环境变量的值 |
| server_property | udf | 获取环境变量 | serverProperty(‘PATH’) 返回 PATH环境变量的值 |
| serviceStartTime | udf | 当前服务器初始化时间(约等于启动时间) | serviceStartTime() 返回 2026-03-30 19:26:04 |
| service_start_time | udf | 当前服务器初始化时间(约等于启动时间) | serviceStartTime() 返回 2026-03-30 19:26:04 |
| sin | udf | sin 正弦 | sin(0.523598) 返回 0.5 |
| sleep | udf | 休眠若干毫秒 (模拟慢查询,最大支持休眠 1 分钟) | sleep(1000) 休眠 1 秒 |
| snowFlakeId | udf | 返回一个雪花 id | snowFlakeId() 返回 1234567890123456789 |
| snow_flake_id | udf | 返回一个雪花 id | snowFlakeId() 返回 1234567890123456789 |
| split | udf | 字符串拆分为数组 | split(‘a,b,c’, ‘,’) |
| splitSqlToTables | udf | 利用from/join关键词从sql中搜索表名(可以解析不完整的sql) | |
| split_sql_to_tables | udf | 利用from/join关键词从sql中搜索表名(可以解析不完整的sql) | |
| splitSubstring | udf | 使用正则拆分,并获取第N个字符串, | 默认返回空字符串 splitSubstring(target,delimiter,index) |
| split_substring | udf | 使用正则拆分,并获取第N个字符串, | 默认返回空字符串 splitSubstring(target,delimiter,index) |
| sqrt | udf | sqrt 平方根 | sqrt(4) 返回 2.0 |
| strToDate | udf | 字符串转时间(允许不指定时间格式) | |
| str_to_date | udf | 字符串转时间(允许不指定时间格式) | |
| substring | udf | 字符串裁剪(注意从1开始算) | |
| substr | udf | 字符串裁剪(注意从1开始算) | |
| substring_index | udf | 获取指定字符附近的子字符串 | |
| substringIndex | udf | 获取指定字符附近的子字符串 | |
| subtract | udf | 多个数相减 | subtract(10, 3, 2) 返回 5 |
| subtractDays | udf | 减少指定天 | subtractDays(date, 1) |
| subtract_days | udf | 减少指定天 | subtractDays(date, 1) |
| subtractHours | udf | 减少指定小时 | subtractHours(date, 1) |
| subtract_hours | udf | 减少指定小时 | subtractHours(date, 1) |
| subtractMinutes | udf | 减少指定分钟 | subtractMinutes(date, 1) |
| subtract_minutes | udf | 减少指定分钟 | subtractMinutes(date, 1) |
| subtractMonths | udf | 减少指定月 | subtractMonths(date, 1) |
| subtract_months | udf | 减少指定月 | subtractMonths(date, 1) |
| subtractSeconds | udf | 减少指定秒钟 | subtractSeconds(date, 1) |
| subtract_seconds | udf | 减少指定秒钟 | subtractSeconds(date, 1) |
| subtractWeeks | udf | 减少指定周 | subtractWeeks(date, 1) |
| subtract_weeks | udf | 减少指定周 | subtractWeeks(date, 1) |
| subtractYears | udf | 减少指定年 | subtractYears(date, 1) |
| subtract_years | udf | 减少指定年 | subtractYears(date, 1) |
| sybnUuid | udf | 返回一个 uuid, 时间基本有序,支持集群唯一性 | sybnUuid() 返回 20240115123045-000001-abc123 |
| sybn_uuid | udf | 返回一个 uuid, 时间基本有序,支持集群唯一性 | sybnUuid() 返回 20240115123045-000001-abc123 |
| tan | udf | tan 正切 | tan(0.785398) 返回 1.0 |
| timestampDiff | udf | 求两个时间的差 | |
| timestamp_diff | udf | 求两个时间的差 | |
| dateDiff | udf | 求两个时间的差 | |
| date_diff | udf | 求两个时间的差 | |
| toDate | udf | 指定值强转时间(支持部分中文和大部分常见的英文日期格式) | toDate(‘今天’) 返回 2026-03-30 00:00:00 |
| to_date | udf | 指定值强转时间(支持部分中文和大部分常见的英文日期格式) | toDate(‘今天’) 返回 2026-03-30 00:00:00 |
| toDateTimeEndString | udf | 指定值强转日期 yyyy-MM-dd 23:59:59 格式 | toDateTimeEndString(‘2020-02-12’) 返回 2020-02-12 23:59:59 |
| to_date_time_end_string | udf | 指定值强转日期 yyyy-MM-dd 23:59:59 格式 | toDateTimeEndString(‘2020-02-12’) 返回 2020-02-12 23:59:59 |
| toDayEndString | udf | 指定值强转日期 yyyy-MM-dd 23:59:59 格式 | toDateTimeEndString(‘2020-02-12’) 返回 2020-02-12 23:59:59 |
| to_day_end_string | udf | 指定值强转日期 yyyy-MM-dd 23:59:59 格式 | toDateTimeEndString(‘2020-02-12’) 返回 2020-02-12 23:59:59 |
| toDateTimeStartString | udf | 指定值强转日期 yyyy-MM-dd 00:00:00 格式 | toDateTimeStartString(‘2020-02-12’) 返回 2020-02-12 00:00:00 |
| to_date_time_start_string | udf | 指定值强转日期 yyyy-MM-dd 00:00:00 格式 | toDateTimeStartString(‘2020-02-12’) 返回 2020-02-12 00:00:00 |
| toDayStartString | udf | 指定值强转日期 yyyy-MM-dd 00:00:00 格式 | toDateTimeStartString(‘2020-02-12’) 返回 2020-02-12 00:00:00 |
| to_day_start_string | udf | 指定值强转日期 yyyy-MM-dd 00:00:00 格式 | toDateTimeStartString(‘2020-02-12’) 返回 2020-02-12 00:00:00 |
| toDateTimeString | udf | 指定值强转日期 yyyy-MM-dd HH:mm:ss 格式 | toDateTimeString(‘2020-02-12’) 返回 2020-02-12 00:00:00 |
| to_date_time_string | udf | 指定值强转日期 yyyy-MM-dd HH:mm:ss 格式 | toDateTimeString(‘2020-02-12’) 返回 2020-02-12 00:00:00 |
| toDayTimeString | udf | 指定值强转日期 yyyy-MM-dd HH:mm:ss 格式 | toDateTimeString(‘2020-02-12’) 返回 2020-02-12 00:00:00 |
| to_day_time_string | udf | 指定值强转日期 yyyy-MM-dd HH:mm:ss 格式 | toDateTimeString(‘2020-02-12’) 返回 2020-02-12 00:00:00 |
| toDayString | udf | 指定值强转日期 yyyy-mm-dd 格式 | toDayString(‘2020-02-12’) 返回 2020-02-12 |
| to_day_string | udf | 指定值强转日期 yyyy-mm-dd 格式 | toDayString(‘2020-02-12’) 返回 2020-02-12 |
| toDays | udf | 返回公元元年至 day 之间的天数 (与 from_days 函数相反) | toDays(‘2020-02-12’) 返回 737835 |
| to_days | udf | 返回公元元年至 day 之间的天数 (与 from_days 函数相反) | toDays(‘2020-02-12’) 返回 737835 |
| toDouble | udf | 指定值强转浮点数 | toDouble(‘3.14’) |
| to_double | udf | 指定值强转浮点数 | toDouble(‘3.14’) |
| toFloat | udf | 指定值强转 (低精度) 浮点数 | toFloat(‘3.14’) |
| to_float | udf | 指定值强转 (低精度) 浮点数 | toFloat(‘3.14’) |
| toInt | udf | 指定值强转整数, 舍弃小数部分 (正负 20 亿) | toInt(‘123.9’) 返回 123 |
| to_int | udf | 指定值强转整数, 舍弃小数部分 (正负 20 亿) | toInt(‘123.9’) 返回 123 |
| toJavaBean | udf | 对象转 java bean | |
| to_java_bean | udf | 对象转 java bean | |
| toList | udf | 指定值强转数组 | toList(‘1,2,3’) toList(‘1’, ‘2’, ‘3’) |
| to_list | udf | 指定值强转数组 | toList(‘1,2,3’) toList(‘1’, ‘2’, ‘3’) |
| toLong | udf | 指定值强转整数 (正负 900 亿亿) | toLong(‘123456789’) 返回 123456789 |
| to_long | udf | 指定值强转整数 (正负 900 亿亿) | toLong(‘123456789’) 返回 123456789 |
| toPercent | udf | 将数字强转百分比 | toPercent(1/3) => 33.33% |
| to_percent | udf | 将数字强转百分比 | toPercent(1/3) => 33.33% |
| toSelectAll | udf | create table 转 select 各个字段 | |
| to_select_all | udf | create table 转 select 各个字段 | |
| toSelectAllDesc | udf | create table 转 select 各个字段及注释 | |
| to_select_all_desc | udf | create table 转 select 各个字段及注释 | |
| toSelectDescAll | udf | create table 转 select 各个字段as中文 | |
| to_select_desc_all | udf | create table 转 select 各个字段as中文 | |
| toSelectHumpAll | udf | create table 转 select 各个字段 as 驼峰 | |
| to_select_hump_all | udf | create table 转 select 各个字段 as 驼峰 | |
| toSet | udf | 指定值强转数组 (并去重) | toSet(‘1,2,2,3’) toSet(‘1’, ‘2’, ‘3’) |
| to_set | udf | 指定值强转数组 (并去重) | toSet(‘1,2,2,3’) toSet(‘1’, ‘2’, ‘3’) |
| toString | udf | 指定值强转文本 | toString(123) 返回 “123” |
| to_string | udf | 指定值强转文本 | toString(123) 返回 “123” |
| toYYYYMM | udf | 指定值强转时间 | toYYYYMM(‘2020-02-12’) 返回 202002 |
| to_y_y_y_y_m_m | udf | 指定值强转时间 | toYYYYMM(‘2020-02-12’) 返回 202002 |
| toYYYYMMDD | udf | 指定值强转时间 | toYYYYMMDD(‘2020-02-12’) 返回 20200212 |
| to_y_y_y_y_m_m_d_d | udf | 指定值强转时间 | toYYYYMMDD(‘2020-02-12’) 返回 20200212 |
| toYYYYMMDDHHMMSS | udf | 指定值强转时间 | toYYYYMMDDHHMMSS(‘2020-02-12’) 返回 20200212000000 |
| to_y_y_y_y_m_m_d_d_h_h_m_m_s_s | udf | 指定值强转时间 | toYYYYMMDDHHMMSS(‘2020-02-12’) 返回 20200212000000 |
| to_pinyin | udf | to_pinyin 中文转拼音 (不含声调) | to_pinyin(‘中国’) 返回 zhong guo |
| toPinyin | udf | to_pinyin 中文转拼音 (不含声调) | to_pinyin(‘中国’) 返回 zhong guo |
| to_pinyin_first_initial | udf | to_pinyin_first_initial 中文转拼音首字符 (返回第一个字的首字母) | to_pinyin_first_initial(‘张’) 返回 Z |
| toPinyinFirstInitial | udf | to_pinyin_first_initial 中文转拼音首字符 (返回第一个字的首字母) | to_pinyin_first_initial(‘张’) 返回 Z |
| to_pinyin_initials | udf | to_pinyin_initials 中文转拼音首字符 (每个字返回首字母) | to_pinyin_initials(‘张三李四’) 返回 ZSLS |
| toPinyinInitials | udf | to_pinyin_initials 中文转拼音首字符 (每个字返回首字母) | to_pinyin_initials(‘张三李四’) 返回 ZSLS |
| trim | udf | 删除首尾空格或指定字符 (允许指定删哪边的空格) | trim(‘ hello ‘) 返回 hello trim(LEADING ‘x’ FROM ‘xxxbar’) 返回 bar |
| truncate | udf | 截取前N位小数, 向 0 取整 | |
| unhex | udf | 16进制字符串转对象 | |
| updateCreateTable | udf | 建表语句升级 | updateCreateTable(‘create table …’, ‘create table …’) |
| update_create_table | udf | 建表语句升级 | updateCreateTable(‘create table …’, ‘create table …’) |
| upper | udf | 返回参数转字符串后的大写格式 | upper(‘hello’) 返回 HELLO |
| toUpperCase | udf | 返回参数转字符串后的大写格式 | upper(‘hello’) 返回 HELLO |
| to_upper_case | udf | 返回参数转字符串后的大写格式 | upper(‘hello’) 返回 HELLO |
| uuid | udf | 返回一个 uuid | uuid() 返回 550e8400-e29b-41d4-a716-446655440000 |
| version | udf | 当前版本号 | version() 返回 0.3.35_20260327 |
| weekDay | udf | 回 date 的星期索引 (0=星期一,1=星期二,……6= 星期天) | weekDay(‘2020-02-12’) 返回 3 (星期三) |
| week_day | udf | 回 date 的星期索引 (0=星期一,1=星期二,……6= 星期天) | weekDay(‘2020-02-12’) 返回 3 (星期三) |
| year | udf | 返回年份 | year(‘2020-02-12’) 返回 2020 |
| toYear | udf | 返回年份 | year(‘2020-02-12’) 返回 2020 |
| to_year | udf | 返回年份 | year(‘2020-02-12’) 返回 2020 |
| argMax | window | 计算最大 val 值对应的 arg 值。argMax(arg, val) | |
| arg_max | window | 计算最大 val 值对应的 arg 值。argMax(arg, val) | |
| argMin | window | 计算最小 val 值对应的 arg 值。argMin(arg, val) | |
| arg_min | window | 计算最小 val 值对应的 arg 值。argMin(arg, val) | |
| avg | window | ||
| avgAny | window | 求平均数,null与0当作0参与计算 | |
| avg_any | window | 求平均数,null与0当作0参与计算 | |
| avga | window | 求平均数,null与0当作0参与计算 | |
| avgPositive | window | 求平均数,null与非正数会被忽略 | |
| avg_positive | window | 求平均数,null与非正数会被忽略 | |
| concatList | window | 类似与sql的MySQL中concat函数, 将做个值拼接为数组值 | |
| concat_list | window | 类似与sql的MySQL中concat函数, 将做个值拼接为数组值 | |
| count | window | ||
| countAll | window | 求 count 值 (null 也算数) | |
| count_all | window | 求 count 值 (null 也算数) | |
| countDistinct | window | ||
| count_distinct | window | ||
| dateList | window | 按日期求折线图数组 | |
| date_list | window | 按日期求折线图数组 | |
| first | window | 返回第一个非null值 | |
| anyValue | window | 返回第一个非null值 | |
| any_value | window | 返回第一个非null值 | |
| firstAny | window | 返回第一个值, 可以返回 null 值 | |
| first_any | window | 返回第一个值, 可以返回 null 值 | |
| firsta | window | 返回第一个值, 可以返回 null 值 | |
| firstNz | window | 返回第一个非零非null值 | |
| first_nz | window | 返回第一个非零非null值 | |
| firstPositive | window | 返回第一个正数值 | |
| first_positive | window | 返回第一个正数值 | |
| groupConcat | window | ||
| group_concat | window | ||
| jobScopeTime | window | 计算任务时长: jobScopeTime(时间轴, 时间间隔, 值[,唯一标识]) | |
| job_scope_time | window | 计算任务时长: jobScopeTime(时间轴, 时间间隔, 值[,唯一标识]) | |
| last | window | 获取最后一个值 | |
| lastAny | window | 返回最后一个值, 可以返回null | |
| last_any | window | 返回最后一个值, 可以返回null | |
| lasta | window | 返回最后一个值, 可以返回null | |
| lastNz | window | 返回最后一个非零非null值 | |
| last_nz | window | 返回最后一个非零非null值 | |
| lastPositive | window | 返回最后一个正数值 | |
| last_positive | window | 返回最后一个正数值 | |
| list | window | 将所有数据合并为一个数组 | |
| group_list | window | 将所有数据合并为一个数组 | |
| groupList | window | 将所有数据合并为一个数组 | |
| array_agg | window | 将所有数据合并为一个数组 | |
| arrayAgg | window | 将所有数据合并为一个数组 | |
| listAll | window | 将所有子数组合并为一个大数组 | |
| list_all | window | 将所有子数组合并为一个大数组 | |
| listAllDistinct | window | 将所有子数组合并为一个去重大数组 | |
| list_all_distinct | window | 将所有子数组合并为一个去重大数组 | |
| listDistinct | window | 将所有子数组去重合并为一个大数组 | |
| list_distinct | window | 将所有子数组去重合并为一个大数组 | |
| longList | window | 按指定数字x轴求折线图数组 | |
| long_list | window | 按指定数字x轴求折线图数组 | |
| map | udaf | 将数据组织成map格式 | |
| mapList | window | 将数据整合为指定 key 的List<Map> | |
| map_list | window | 将数据整合为指定 key 的List<Map> | |
| mapSum | window | 将多行数据合并为单个map的kv对中 | |
| map_sum | window | 将多行数据合并为单个map的kv对中 | |
| max | window | ||
| maxStr | window | ||
| max_str | window | ||
| min | window | ||
| scopeList | window | 按指定范围x轴求折线图数组 | |
| scope_list | window | 按指定范围x轴求折线图数组 | |
| set | window | 将数据组合为 set | |
| setAll | window | 将数据尽可能打散后用 set 聚合到一起. 比如二次聚合group_concat的结果 | |
| set_all | window | 将数据尽可能打散后用 set 聚合到一起. 比如二次聚合group_concat的结果 | |
| subMap | udaf | 将数据组织成map格式 | |
| sub_map | udaf | 将数据组织成map格式 | |
| subMapList | window | 将多行数据转换为单个map的kv对中 | |
| sub_map_list | window | 将多行数据转换为单个map的kv对中 | |
| subValueList | window | 如果子项目是数组或集合,则合并 | |
| sub_value_list | window | 如果子项目是数组或集合,则合并 | |
| subValueListAll | window | 如果子项目是数组或集合,则合并所有值 | |
| sub_value_list_all | window | 如果子项目是数组或集合,则合并所有值 | |
| subValueSet | window | 如果子项目是数组或集合,则合并且去重 | |
| sub_value_set | window | 如果子项目是数组或集合,则合并且去重 | |
| sum | window | ||
| valueList | window | 如果项目是数组或集合,则合并 | |
| value_list | window | 如果项目是数组或集合,则合并 | |
| valueListAll | window | 如果项目是数组或集合,则合并所有值 | |
| value_list_all | window | 如果项目是数组或集合,则合并所有值 | |
| valueSet | window | 如果项目是数组或集合,则合并且去重 | |
| value_set | window | 如果项目是数组或集合,则合并且去重 | |
| lag | window | 访问当前行之前指定偏移量的行数据 | |
| rowNumber | window | 为窗口分区中的每一行分配唯一的连续序号 | |
| row_number | window | 为窗口分区中的每一行分配唯一的连续序号 | |
| json_table | udtf | 展开 json 中的所有字段, 增加数据的行数和列数. json_table(json) | |
| jsonTable | udtf | 展开 json 中的所有字段, 增加数据的行数和列数. json_table(json) | |
| unwind | command | 数据列转行 unwind(字段1, [字段2 …]) 所有字段拆成数组后笛卡尔积生成新行, 未被拆分的字段会被复制, 参考自 MongoDB | |
| alignColumns | command | 对齐列 alignColumns([字段1, 字段2 …]) 默认对齐所有列, 指定参数时仅返回指定列 | |
| appendColumns | command | 添加新的列到结尾位置 appendColumns(字段值 as 字段1, [字段值 as 字段2 …]) 默认会覆盖原有值, 可以使用if等函数保留原始值 | |
| builderInsert | command | 根据维度对齐数据行 builderInsert([字段列表]) 默认全部字段 | |
| cacheResult | command | 在不同查询之间缓存查询结果; cacheResult(子sql) [on cacheable=true and clearCache=false and cacheType=memory] | |
| clearQueue | command | 清理查询堆栈 clearQueue([清理数量]) | |
| dynamicSourceQuery | command | 向指定数据库发起查询 dynamicSourceQuery(子查询) on source_type=’(jdbc|sysql)’ and (dbsource=’xxx’ | url=’xxx’) | |
| execBatch | command | 批量查询 select …; execBatch(子sql) [on concurrent=线程数] [and safe_params=安全参数] [and ignore_error=忽略异常] [and sub_timeout_sec=子任务超时时长] [and on_error_query=失败代偿sql] [and on_empty_query=空值代偿sql] 将前置查询的结果作为批量查询的入参 | |
| explain | command | 获取 sql 查询计划 explain select … 对非 jdbc 数据源无效 | |
| fill | command | 根据维度对齐数据行 fill(id(id,int),field,t(t,yyyy-MM-dd)) 比如将 group by 返回值中缺失的日期补0 | |
| if exists | command | 根据断言sql是否为空, 决定指定哪个sql if exists (when_sql) then (then_sql) [else (else_sql)] | |
| limit | command | 对前一个结果执行 limit 操作, 等效于 select * from (前一个sql) limit 当前条件 | |
| loadFileSourceQuery | command | 读取指定文件 loadFileSourceQuery(‘/usr/local/log/xxx.log’) on delimiter=’,’ | |
| order | command | 对前一个结果执行 order by [limit] 操作, 等效于 select * from (前一个sql) order by 当前条件 | |
| pivot | command | 行列转换 PIVOT(aggList FOR groupField IN(groupValues)) 类似于 excel 的转置, 参考自 sql server 的 PIVOT | |
| prependColumns | command | 添加新的列到开头位置 prependColumns(字段值 as 字段1, [字段值 as 字段2 …]) 默认会覆盖原有值, 可以使用if等函数保留原始值 | |
| removeColumns | command | 删除部分列 removeColumns(字段1, [字段2 …]) | |
| return | command | 返回结果不再继续执行, 可以返回指定结果 | |
| splitColumns | command | 拆分列 splitColumns(field, split, prefix, postfix) | |
| unnest | command | 数据列转行 UNNEST([map|array]) as t(字段1[, 字段2…]) 行展开或列展开, 参考自 flink | |
| where | command | 对前一个结果执行 where [order by] [limit] 操作, 等效于 select * from (前一个sql) where 当前条件 |