函数列表
涵盖的数据源:presto、impala、hive、spark、greenplum、oracle、postgresql、redshift、sqlserver、tidb、mysql、db2、mongodb、maxcompute
数字函数
函数名 | 描述 | 参数说明 | 返回值类型 | 不支持数据源 |
---|---|---|---|---|
abs(N) | 绝对值运算。例如:abs(-1),返回数字类型:1 | 数字类型参数, 可选类型:NUMBER | NUMBER | |
ceil(N) | 获取大于等于指定数值的最小整数值 | 数字类型参数, 可选类型:NUMBER | NUMBER | |
floor(N) | 获取小于等于指定数值的最小整数 | 数字类型参数, 可选类型:NUMBER | NUMBER | |
median(N) | 获取指定数值列的中位数 | 数字类型参数, 可选类型:NUMBER | NUMBER | impala hive spark sqlserver tidb mysql |
mod(DIVIDEND,DIVISOR) | 取模运算,参数可以是小数。例如:mod(12.3, 5),返回数字类型:2.3 | 1.被除数, 可选类型:NUMBER;2.除数, 可选类型:NUMBER | NUMBER | |
growth_rate(CURRENT,PREVIOUS) | 增长率 | 1.新值, 可选类型:NUMBER; 2.前值, 可选类型:NUMBER | NUMBER | |
percentile(N,PERCENT) | 计算百分位数 | 1.数字类型参数, 可选类型:NUMBER; 2.内部参数, 可选类型:NUMBER | NUMBER | impala hive spark sqlserver tidb mysql mongodb maxcompute |
power(BASE,EXPONENT) | 乘方运算。例如:power(2,3),返回数字类型:8 | 1.底数, 可选类型:NUMBER; 2.指数, 可选类型:NUMBER | NUMBER | |
round(N,LITERAL_PRECISION) | 四舍五入后指定位数 | 1.数字类型参数, 可选类型:NUMBER; 2.指定精度, 可选类型:NUMBER | NUMBER | |
sign(N) | 符号函数。例如:sign(x), 若 x>0,则返回1;若 x=0,则返回0;若 x<0,则返回-1 | 数字类型参数, 可选类型:NUMBER | NUMBER | |
sqrt(N) | 平方根运算 | 数字类型参数, 可选类型:NUMBER | NUMBER | |
cbrt(N) | 立方根运算 | 数字类型参数, 可选类型: NUMBER | NUMBER | mysql oracle sqlserver db2 impala tidb mongodb |
acos(N) | 返回 N 的反余弦值, 以弧度表示, N 必须是 [-1, 1] 之间的值, 例如: acos(0.5) = 1.0471975511966 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
asin(N) | 返回 N 的反正弦值, 以弧度表示, N 必须是 [-1, 1] 之间的值, 例如: asin(0.5) = 0.523598775598299 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
atan(N) | 返回 N 的反正切值, 以弧度表示, 例如: atan(1) = 0.785398163397448 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
atan2(ARG1, ARG2) | 返回 arg1/arg2 的反正切值, 以弧度表示, 例如: atan2(2, 2) = 0.785398163397448 | 数字类型参数, 可选类型: NUMBER | NUMBER | hive |
cos(N) | 返回 N 的余弦值, N 表示弧度, 例如: cos(pi()/3) = 0.5 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
cot(N) | 返回 N 的余切值, N 表示弧度, N 不能为 0, 例如: cot(pi()/4) = 1 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
sin(N) | 返回 N 的正弦值, N 表示弧度, 例如: sin(pi()/6) = 0.5 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
tan(N) | 返回 N 的正切值, N 表示弧度, 例如: tan(pi()/4) = 1 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
cosh(N) | 返回 N 的双曲余弦值, 例如: cosh(1) = 1.5430806348152437 | 数字类型参数, 可选类型: NUMBER | NUMBER | postgres greenplum mysql sqlserver hive tidb mongodb redshift |
sinh(N) | 返回 N 的双曲正弦值, 例如: sinh(1) = 0.8686709614860095 | 数字类型参数, 可选类型: NUMBER | NUMBER | postgres greenplum mysql sqlserver hive tidb presto mongodb redshift |
tanh(N) | 返回 N 的双曲正切值, 例如: tanh(1) = 0.7615941559557649 | 数字类型参数, 可选类型: NUMBER | NUMBER | postgres greenplum mysql sqlserver hive tidb mongodb redshift |
degrees(N) | 把弧度转为角度, N 表示弧度 | 数字类型参数, 可选类型: NUMBER | NUMBER | oracle |
radians(N) | 把角度转为弧度, N 表示角度 | 数字类型参数, 可选类型: NUMBER | NUMBER | oracle |
pi() | π 常量, 等于 3.14159265358979 | NUMBER | orace db2 | |
exp(N) | e 的 N 次幂, e 为自然对数的底数, exp(1) = 2.171828182845904 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
ln(N) | 返回 N 的自然对数, 自然对数以常数项 e(2.71828182845904) 为底, N 要求大于 0, 例如: ln(1) = 0 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
log(BASE, N) | 返回以 BASE 为底的对数, BASE 必须大于 0, 且不能为 1, N 必须大于 0, 例如: log(3, 9) = 2 | BASE, 可选类型: NUMBER N, 可选类型: NUMBER | NUMBER | db2 redshift |
log2(N) | 返回以 2 为底的对数, N 必须大于 0, 例如: log2(4) = 2 | 数字类型参数, 可选类型: NUMBER | NUMBER | db2 redshift |
log10(N) | 返回以 10 为底的对数, N 必须大于 0, 例如: log10(100) = 2 | 数字类型参数, 可选类型: NUMBER | NUMBER | |
rand() | 范围 0.0 <= N < 1.0 中的随机值 | NUMBER | ||
greatest(ARG1, ARG2) | 返回列表中最大的一个 | ARG1: 数字类型参数, 可选类型: NUMBER ARG2: 数字类型参数, 可选类型: NUMBER | NUMBER | |
least(ARG1, ARG2) | 返回列表中最小的一个 | ARG1: 数字类型参数, 可选类型: NUMBER ARG2: 数字类型参数, 可选类型: NUMBER | NUMBER |
字符串函数
函数名 | 描述 | 参数说明 | 返回值类型 | 不支持数据源 |
---|---|---|---|---|
concat(S1,S2,S3...) | 将多个参数作为文本拼接到一起。例如:concat('abc', 123),返回字符串类型:'abc123' | 文本类型参数, 可选类型:STRING | STRING | |
initcap(S) | 对指定字符串做格式化操作,将字符串中的每个单词首字母变为大写,其他字母变为小写 | 文本类型参数, 可选类型:STRING | STRING | tidb mongodb |
length(S) | 计算字符串的长度 | 文本类型参数, 可选类型:STRING | NUMBER | |
lower(S) | 将指定字符串的所有字符修改为小写 | 文本类型参数, 可选类型:STRING | STRING | |
position(S,PATTERN) | 获取子字符串在指定字符串中第一次出现的位置 | 1.文本类型参数, 可选类型:STRING; 2.内部参数, 可选类型:STRING | NUMBER | |
to_string(ARG) | 把输入的字段或者值转换成文本 | 参与计算的参数, 可选类型:ANY | STRING | |
trim(S) | 去掉字符串首尾的空格 | 文本类型参数, 可选类型:STRING | STRING | |
replace(s,s1,s2) | 替换字符串。用法 replace(s, s1, s2), s2替换 s 中出现的所有 s1。 | 1.文本类型参数, 可选类型:STRING2; 2.第1个文本参数, 可选类型:STRING; 3.第2个文本参数, 可选类型:STRING | STRING | |
substring(S,START,LENGTH) | 截取子字符串。用法 substring(s, start, length), start 从 1 开始。 | 1.文本类型参数, 可选类型:STRING; 2.指定起始, 可选类型:NUMBER; 3.指定长度, 可选类型:NUMBER | STRING | |
upper(S) | 将指定字符串的所有字符修改为大写 | 文本类型参数, 可选类型:STRING | STRING | |
unlike(S,LITERAL_PATTERN) | 指定字段不包含特定文本 | 1.文本类型参数, 可选类型:STRING; 2.指定模式, 可选类型:STRING | BOOL | |
like(S,LITERAL_PATTERN) | 指定字段包含特定文本 | 1.文本类型参数, 可选类型:STRING; 2.指定模式, 可选类型:STRING | BOOL | |
TRIM(s) | 去掉指定字符串首尾的空格。 示例: TRIM({usertype}) TRIM(' X ')) | STRING 类型 | 返回值类型字符串 | 支持的数据源包括: Athena、Clickhouse、Dameng、Db2、Postgresql、Greenplum、Spark、Hologres、Impala、Kylin、Maxcompute、Mysql、Mongodb、Oracle、Presto、Redshift、Saphana、Sqlserver、Tidb、Vertica |
ltrim(s1, s2) | 该函数从 s1字符串起始位置查找与 s2字符串相同的内容,当内容与 s2字符串不符时停止查找,并删除查找到的内容。 示例 ltrim('abcbabca','ab'),返回结果为 cbabca。 | 参数1:string 类型。 参数2:string 类型。 | 返回值为字符串类型。 | 支持的数据源:Athena、Clickhouse、Dameng、Db2、Postgresql、Greenplum、Spark、Hologres、Impala、Kylin、Maxcompute、Mysql、Mongodb、Oracle、Presto、Redshift、Saphana、Sqlserver、Tidb、Vertica |
rtrim(s1, s2) | 该函数从 s1字符串结束位置开始往前查找与 s2字符串相同的内容,当内容与 s2字符串不符时停止查找,并删除查找到的内容。示例:rtrim('abadcdabab','ab')返回值为 abadcd。 | 参数1:string 类型。 参数2:string 类型。 | 返回值为字符串类型。 | 支持的数据源:Athena、Clickhouse、Dameng、Db2、Postgresql、Greenplum、Spark、Hologres、Impala、Kylin、Maxcompute、Mysql、Mongodb、Oracle、Presto、Redshift、Saphana、Sqlserver、Tidb、Vertica |
split(s, delimiter, n) | 该函数将字符串 s 按分隔符 delimiter 切分, 并返回切分后的第 n 个(n 从1开始)字符串。如 split('abc,abc,abcdef',',',3),返回字符串是 abcdef。 | 参数1:string 类型。 参数2:string 类型。 参数3:int 类型。 | 返回值为 string 类型。 | 支持的数据源: Athena、Clickhouse、Doris、Postgresql、Greenplum、Spark、Hive、Hologres、Impala、Maxcompute、Mysql、Mongodb、Phoenix、Presto、Redshift、Tidb、Vertica |
regexp_extract(s, regexp, index) | 该函数将字符串 s 按照正则表达式 regexp 的规则拆分,返回 index 指定的字符 | 参数1:string 类型。 参数2:string 类型。 参数3:int 类型。 | 返回值为 string 类型。 | 支持的数据源:Athena、Doris、Postgresql、Spark、Hive、Hologres、Impala、Presto |
regexp_match(s, regexp) | 判断字符串 s 是否匹配正则表达式 regexp 模式。匹配成功返回 TRUE,匹配失败返回 FALSE。 | 参数1:string 类型。 参数2:string 类型。 | 返回值是 bool 类型。 | 支持的数据源: Athena、Clickhouse、Dameng、Db2、Doris、Postgresql、Greenplum、Spark、Hive、Hologres、Impala、Maxcompute、Mysql、Mongodb、Oracle、Presto、Redshift、Saphana、Tidb、Vertica |
regexp_replace(s, regexp, replacement) | 将字符串 s 中匹配正则表达式 regexp 的字符替换为指定字符串 replacement。 | 参数1:string 类型。 参数2:string 类型。 参数3:string 类型。 | 返回值是 string 类型。 | 支持的数据源:Athena、Clickhouse、Dameng、Db2、Doris、Postgresql、Greenplum、Spark、Hive、Hologres、Impala、Maxcompute、Mysql、Oracle、Phoenix、Presto、Redshift、Vertica |
窗口函数
函数名 | 描述 | 参数说明 | 返回值类型 | 不支持数据源 |
---|---|---|---|---|
row_number() | 窗口函数,返回当前窗口的行数,计数从1开始逐一递增,数字不重复,比如1、2、3、4。用法:row_number() OVER( [ PARTITION BY expr1 ] ORDER BY expr2 [ DESC ] ) | NUMBER | impala hive skqrk oracle tidb mysql mongodb | |
rank() | 窗口函数,返回当前窗口的排名(保持间隔),计数从1开始,排名相同数字相同,后面的排名会跳跃,比如1、2、2、4。用法:rank() OVER( [ PARTITION BY expr1 ] ORDER BY expr2 [ DESC ] ) | NUMBER | impala hive skqrk tidb mysql mongodb | |
dense_rank() | 窗口函数,返回当前窗口的排名(不保持间隔),计数从1开始,排名相同数字相同,后面的排名不跳跃,比如1、2、2、3。用法:dense_rank() OVER( [ PARTITION BY expr1 ] ORDER BY expr2 [ DESC ] ) | NUMBER | impala hive skqrk tidb mysql mongodb | |
lag(ARG,I) | 窗口函数,向前获得相对于当前记录指定 i 距离的那条记录的 arg 数据 | 1.参与计算的参数, 可选类型:ANY; 2.整数类型参数, 可选类型:NUMBER | ANY | impala hive skqrk tidb mysql mongodb |
lead(ARG,I) | 窗口函数,向后获得相对于当前记录指定 i 距离的那条记录的 arg 数据 | 1.参与计算的参数, 可选类型:ANY; 2.整数类型参数, 可选类型:NUMBER | ANY | impala hive skqrk tidb mysql mongodb |
日期函数
函数名 | 描述 | 参数说明 | 返回值类型 | 不支持数据源 |
---|---|---|---|---|
add_day(T,I) | 返回从起始日期算起,数值字段对应天数之后的日期,如果数值字段是负数,则返回对应天数之前的日期。例如:add_day('2018-02-02',3),返回时间类型:2018-02-05 | 1.时间类型参数, 可选类型:DATE; 2.整数类型参数, 可选类型:NUMBER | DATE | |
add_hour(T,I) | 返回从起始时间算起,数值字段对应小时数之后的时间,如果数值字段是负数,则返回对应小时数之前的时间。例如:add_hour('2018-02-02 08:30:00.000',3),返回时间类型:2018-02-02 11:30:00.000 | 1.时间类型参数, 可选类型:DATE; 2.整数类型参数, 可选类型:NUMBER | DATE | |
add_minute(T,I) | 返回从起始时间算起,数值字段对应分钟数之后的时间,如果数值字段是负数,则返回对应分钟数之前的时间。例如:add_minute('2018-02-02 08:30:00.000',3),返回时间类型:2018-02-02 08:33:00.000 | 1.时间类型参数, 可选类型:DATE; 2.整数类型参数, 可选类型:NUMBER | DATE | |
add_month(T,I) | 返回从起始日期算起,数值字段对应月数之后的日期,如果数值字段是负数,则返回对应月数之前的日期。例如:add_month('2018-02-02',3),返回时间类型:2018-05-02 | 1.时间类型参数, 可选类型:DATE; 2整数类型参数, 可选类型:NUMBER | DATE | |
add_quarter(T,I) | 返回从起始日期算起,数值字段对应季度数之后的日期,如果数值字段是负数,则返回对应季度数之前的日期。例如:add_quarter('2018-02-02',3),返回时间类型:2018-05-02 | 1.时间类型参数, 可选类型:DATE; 2.整数类型参数, 可选类型:NUMBER | DATE | |
add_week(T,I) | 返回从起始日期算起,数值字段对应星期数之后的日期,如果数值字段是负数,则返回对应星期数之前的日期。例如:add_week('2018-02-02',3),返回时间类型:2018-05-02 | 1.时间类型参数, 可选类型:DATE; 2.整数类型参数, 可选类型:NUMBER | DATE | |
add_year(T,I) | 返回从起始日期算起,数值字段对应年数之后的日期,如果数值字段是负数,则返回对应年数之前的日期。例如:add_year('2018-02-02',3),返回时间类型:2021-02-02 | 1.时间类型参数, 可选类型:DATE; 2.整数类型参数, 可选类型:NUMBER | DATE | |
add_year_keep_woy(T,I) | 和 add_year 类似,但是调整日期使得年中周数保持不变 | 1.时间类型参数, 可选类型:DATE; 2.整数类型参数, 可选类型:NUMBER | DATE | mysql tidb sqlserver redshift spark hive impala presto db2 mongodb maxcompute |
diff_in_day(START,END) | 比较两个日期在天数上的差异。例如:diff_in_day('2015-02-03', '2018-02-03'),返回整数类型:1095 | 1.指定起始, 可选类型:DATE; 2.指定结束, 可选类型:DATE | NUMBER | |
diff_in_hour(START,END) | 比较两个时间在小时上的差异。例如:diff_in_hour('2015-03-24 16:32:32', '2018-02-02 12:34:43'),返回整数类型:25100 | 1.指定起始, 可选类型:DATE; 2.指定结束, 可选类型:DATE | NUMBER | |
diff_in_minute(START,END) | 比较两个时间在分钟上的差异。例如:diff_in_minute('2015-03-24 16:32:32', '2018-02-02 12:34:43'),返回整数类型:1506002 | 1.指定起始, 可选类型:DATE; 2.指定结束, 可选类型:DATE | NUMBER | |
diff_in_month(START,END) | 比较两个日期在月份上的差异。例如:diff_in_month('2015-02-03', '2018-02-03'),返回整数类型:36 | 1.指定起始, 可选类型:DATE; 2.指定结束, 可选类型:DATE | NUMBER | |
diff_in_year(START,END) | 比较两个时间在年份上的差异。例如:diff_in_year('2015-02-03', '2018-02-03'),返回整数类型:3 | 1.指定起始, 可选类型:DATE; 2.指定结束, 可选类型:DATE | NUMBER | |
end_of_month(T) | 获取时间字段所在的月末最后一天的起始时间 | 时间类型参数, 可选类型:DATE | DATE | |
extract_day(T) | 获取参数中的天部分,表示当天是当月是第几天。例如:extract_day('2018-02-02'),返回整数类型:2 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_dow(T) | 获取参数中的天部分,表示当天是星期几。例如:extract_dow('2018-02-02'),返回整数类型:5 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_doy(T) | 获取参数中的天部分,表示当天是一年是第几天。例如:extract_doy('2018-02-02'),返回整数类型:33 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_hour(T) | 获取参数中的小时部分,表示当前小时数。例如:extract_hour('2018-02-03 13:23:21'),返回整数类型:13 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_minute(T) | 获取参数中的分钟部分,表示当前分钟数。例如:extract_minute('2018-02-03 13:23:21'),返回整数类型:02 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_month(T) | 获取参数中的月份部分。例如:extract_month('2018-02-02'),返回整数类型:2 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_quarter(T) | 获取参数中的季度部分。例如:extract_quarter('2018-02-02'),返回整数类型:1 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_second(T) | 获取参数中的秒部分,表示当前秒数。例如:extract_second('2018-02-03 13:23:21'),返回整数类型:03 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_week(T) | 获取参数中的星期部分,表示当天所属星期是一年是第几个星期。例如:extract_week('2018-02-02'),返回整数类型:4 | 时间类型参数, 可选类型:DATE | NUMBER | |
extract_year(T) | 获取参数中的年份部分。例如:extract_year('2018-02-02'),返回整数类型:2018 | 时间类型参数, 可选类型:DATE | NUMBER | |
month_weekday_count(YEAR,MONTH) | 获取参数所在月份的工作日天数。例如:month_weekday_count(2018, 2),返回整数类型:20 | 1.年份, 可选类型:NUMBER; 2.月份, 可选类型:NUMBER | NUMBER | mysql tidb sqlserver redshift oracle impala hive spark db2 mongodb maxcompute |
now() | 返回当前时间,时间类型 | 无参数 | DATE | |
parse_time(S,LITERAL_PATTERN) | 使用 literal_pattern 将 s 参数解析成时间类型 | 1.文本类型参数, 可选类型:STRING; 2.指定模式, 可选类型:STRING | DATE | sqlserver |
time_in_range(T,S) | 判断日期 date 是否在指定的范围,可选范围有: 'Current Year', 'Current Year-to-Date', 'Current Quarter', 'Current Quarter-to-Date', 'Current Month', 'Current Month-to-Date', 'Current Week', 'Current Week-to-Date', 'Today', 'Current Hour', 'Yesterday', 'Recent 7 days', 'Recent 30 days', 'Recent 90 days', 'All Available Date', 'All Invalid Date', 'All' | 1.时间类型参数, 可选类型:DATE; 2.文本类型参数, 可选类型:STRING | BOOL | |
today() | 返回当前日期,日期类型 | 无参数 | DATE | |
trunc_day(T) | 将时间或者日期列截取到天。例如:trunc_day('2018-02-02 12:30:59'),返回日期类型:'2018-02-02' | 时间类型参数, 可选类型:DATE | DATE | |
trunc_hour(T) | 将时间列截取到小时,更细粒度全都置为0。例如:trunc_hour('2018-02-02 12:23:32'),返回时间类型:'2018-02-02 12:00:00' | 时间类型参数, 可选类型:DATE | DATE | |
trunc_minute(T) | 将时间列截取到分钟,更细粒度全都置为0。例如:trunc_minute('2018-02-02 12:23:32'),返回时间类型:'2018-02-02 12:23:00' | 时间类型参数, 可选类型:DATE | DATE | |
trunc_month(T) | 将时间或者日期列截取到月,日期置为1日。例如:trunc_month('2018-02-02 12:23:32'),返回日期类型:'2018-02-01' | 时间类型参数, 可选类型:DATE | DATE | |
trunc_millisecond(T) | 将时间列截取到毫秒,更细粒度全都置为0。例如:trunc_millisecond('2018-02-02 12:23:32.123'),返回时间类型:'2018-02-02 12:23:32.123' | 时间类型参数, 可选类型:DATE | DATE | |
trunc_quarter(T) | 将时间或者日期列截取到季度,月份置为季度中的第一个月,日期置为1日。例如:trunc_quarter('2018-05-02 12:23:32'),返回日期类型:'2018-04-01' | 时间类型参数, 可选类型:DATE | DATE | |
trunc_second(T) | 将时间列截取到秒,更细粒度全都置为0。例如:trunc_second('2018-02-02 12:23:32.123'),返回时间类型:'2018-02-02 12:23:32.000' | 时间类型参数, 可选类型:DATE | DATE | |
trunc_week(T) | 将时间或者日期列截取到周,月份和日期置为本周的第一天。例如:trunc_week('2018-02-02'),返回日期类型:'2018-01-29' | 时间类型参数, 可选类型:DATE | DATE | |
trunc_year(T) | 将时间或者日期列截取到年,月份和日期置为1月1日。例如:trunc_year('2018-02-02 12:23:32'),返回日期类型:'2018-01-01' | 时间类型参数, 可选类型:DATE | DATE |
聚合函数
函数名 | 描述 | 参数说明 | 返回值类型 | 不支持数据源 |
---|---|---|---|---|
avg(N) | 获取指定数值列的平均值 | 数字类型参数, 可选类型:NUMBER | NUMBER | |
count(ARG) | 获取指定列的值的数目 | 参与计算的参数, 可选类型:ANY | NUMBER | |
distinct(ARG) | 查询列中的唯一值(去重) | 参与计算的参数, 可选类型:ANY | ANY | |
distinct_count(ARG) | 获取指定列中非重复结果的数目 | 参与计算的参数, 可选类型:ANY | NUMBER | |
max(ARG) | 获取指定数值列的最大值 | 参与计算的参数, 可选类型:ANY | ANY | |
max_by(ARG,COMPARE) | 获取 compare 列最大那行对应的 arg 列的值,如有多个最大值取随机一个 | 1.参与计算的参数, 可选类型:ANY; 2.对比数值, 可选类型:ANY | ANY | impala hive spark redshift sqlserver tidb mysql db2 mongodb maxcompute |
min(ARG) | 获取指定数值列的最小值 | 参与计算的参数, 可选类型:ANY | ANY | |
min_by(ARG,COMPARE) | 获取 compare 列最小那行对应的 arg 列的值,如有多个最小值取随机一个 | 1.参与计算的参数, 可选类型:ANY; 2.对比数值, 可选类型:ANY | ANY | impala hive spark redshift sqlserver tidb mysql db2 mongodb maxcompute |
sum(N) | 获取指定数值列的和 | 数字类型参数, 可选类型:NUMBER | NUMBER | |
corr(ARG1, ARG2) | 返回两个数字列的相关系数, 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(1000,1001)], corr(arg1, arg2) = 1 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver impala tidb mongodb redshift |
covar_pop(ARG1, ARG2) | 返回两个数字列的总体协方差, 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(1000,1001)], covar_pop(arg1, arg2) = 138058.47222222222 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver impala tidb mongodb redshift |
covar_samp(ARG1, ARG2) | 返回两个数字列的样本协方差, 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(1000,1001)], covar_samp(arg1, arg2) = 165670.16666666666 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver impala tidb mongodb redshift |
regr_avgx(ARG1, ARG2) | 返回自变量的平均值 (sum(ARG2)/N), 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(1000,1)], regr_avgx(arg1, arg2) = 3.5 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb presto mongodb redshift |
regr_avgy(ARG1, ARG2) | 返回因变量的平均值 (sum(ARG1)/N), 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(1000,1)], regr_avgy(arg1, arg2) = 3.5 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb presto mongodb redshift |
regr_count(ARG1, ARG2) | 两个表达式都不为空的输入行的数目, 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(1000,1), (null, 7), (6, null)], regr_count(arg1, arg2) = 6 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb presto mongodb redshift |
regr_intercept(ARG1, ARG2) | 由(arg2, arg1)对决定的最小二乘拟合的线性方程的 arg1 截距, 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(1000,1)], regr_intercept(arg1, arg2) = 665.666666666666 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb mongodb redshift |
regr_r2(ARG1, ARG2) | 相关系数的平方, 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(10,1)], regr_r2(arg1, arg2) = 0.06323185011709602 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb presto mongodb redshift |
regr_slope(ARG1, ARG2) | 由(arg2, arg1)对决定的最小二乘拟合的线性方程的斜率, 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(10,1)], regr_slope(arg1, arg2) = -0.42857142857142855 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb mongodb redshift |
regr_sxx(ARG1, ARG2) | sum(arg2^2) - sum(arg2)^2/N (自变量的"平方和"), 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(10,1)], regr_sxx(arg1, arg2) = 17.5 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb presto mongodb redshift |
regr_sxy(ARG1, ARG2) | sum(arg2 * arg1) - sum(arg2) * sum(arg1)/N (自变量乘以因变量的"积之合"), 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(10,1)], regr_sxy(arg1, arg2) = -7.5 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb presto mongodb redshift |
regr_syy(ARG1, ARG2) | sum(arg1^2) - sum(arg1)^2/N (因变量的"平方和"), 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(10,1)], regr_syy(arg1, arg2) = 50.833333333333336 | 1. ARG1, 可选类型: NUMBER 2. ARG2, 可选类型: NUMBER | NUMBER | mysql sqlserver hive(小于2.2) spark impala tidb presto mongodb redshift |
stddev_pop(N) | 返回数字列的总体标准偏差, 例如: n = [(1000),(1001),(1003),(1004),(1005),(1000)], stddev_pop(n) = 1.9507833184532709 | 数字类型参数, 可选类型: NUMBER | NUMBER | tidb |
stddev_samp(N) | 返回数字列的样本标准偏差, 例如: n = [(1000),(1001),(1003),(1004),(1005),(1000)], stddev_samp(n) = 2.1369760566432809 | 数字类型参数, 可选类型: NUMBER | NUMBER | tidb |
var_pop(N) | 返回数字列的样本标准偏差, 例如: n = [(1000),(1001),(1003),(1004),(1005),(1000)], stddev_samp(n) = 2.1369760566432809 | 数字类型参数, 可选类型: NUMBER | NUMBER | tidb mongodb |
var_samp(N) | 返回数字列的样本方差(样本标准偏差的平方), 例如: n = [(1000),(1001),(1003),(1004),(1005),(1000)], var_samp(n) = 4.5666666666666667 | 数字类型参数, 可选类型: NUMBER | NUMBER | tidb mongodb |
string_agg(S, DELIMITER) | 把字段 S 拼接成字符串, 中间用 DELIMITER 进行分割, 其中 oracle 必须带有 within group 子句 | 1. S: 需要拼接的字段,可选类型: ANY 2. DELIMITER: 分隔符, 可选类型: STRING | STRING | mysql hive sparksql impala presto tidb mongodb maxcompute |
其他函数
函数名 | 描述 | 参数说明 | 返回值类型 | 不支持数据源 |
---|---|---|---|---|
between(ARG,START,END) | 判断 arg 是否处于[start,end]之间 | 1.参与计算的参数, 可选类型:ANY; 2.指定起始, 可选类型:ANY;3.指定结束, 可选类型:ANY | BOOL | |
between_ie(ARG,START,END) | 判断 arg 是否处于(start,end]之间 | 1.参与计算的参数, 可选类型:ANY; 2.指定起始, 可选类型:ANY;3.指定结束, 可选类型:ANY | BOOL | |
group(ARG) | 分组统计 | 参与计算的参数, 可选类型:ANY | ANY | |
if(B,TRUE,FALSE) | 条件分支判断,后两个参数的类型必需一样。例如:if({score}>=60, '及格', '不及格') | 1.条件,布尔类型参数, 可选类型:BOOL; 2.条件为真时的值, 可选类型:ANY; 3.条件为假时的值, 可选类型:ANY | ANY | |
in(ARG,ARR) | 字段的值是否在列表中 | 1.参与计算的参数, 可选类型:ANY;2.数组类型参数, 可选类型:ARRAY | BOOL | |
isnotnull(ARG) | 判断指定字段是否为非 null | 参与计算的参数, 可选类型:ANY | BOOL | |
isnull(ARG) | 判断指定字段是否为 null | 参与计算的参数, 可选类型:ANY | BOOL | |
first(ARG) | 获取指定列中第一个记录的值 | 与计算的参数, 可选类型:ANY | ANY | redshift sqlserver tidb mysql db2 mongodb maxcompute |
jsonget(JSON,KEY) | 获取 JSON 的指定 key | 1.json 类型参数, 可选类型:JSON; 2.指定键值, 可选类型:STRING | STRING | impala hive spark oracle db2 mongodb maxcompute |
last(ARG) | 获取指定列中最后一个记录的值 | 参与计算的参数, 可选类型:ANY | ANY | redshift sqlserver tidb mysql db2 mongodb maxcompute |
list_collect(ARG) | 聚合函数,把 arg 的参数收集为数组 | 参与计算的参数, 可选类型:ANY | ARRAY | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
list_collect_flatten(ARR) | 聚合函数,把 arr 的参数收集打平为数组 | 数组类型参数, 可选类型:ARRAY | ARRAY | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
list_count(ARR) | 获取数组长度 | 数组类型参数, 可选类型:ARRAY | NUMBER | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
list_except(ARR1,ARR2) | 计算两个数组的差集 | 1.第1个数组, 可选类型:ARRAY; 2.第2个数组, 可选类型:ARRAY | ARRAY | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
list_intersect(ARR1,ARR2) | 计算两个数组的交集 | 1.第1个数组, 可选类型:ARRAY;2.第2个数组, 可选类型:ARRAY | ARRAY | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
list_union(ARR1,ARR2) | 计算两个数组的并集 | 1.第1个数组, 可选类型:ARRAY; 2.第2个数组, 可选类型:ARRAY | ARRAY | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
notin(ARG,ARR) | 字段的值是否不在列表中 | 1.参与计算的参数, 可选类型:ANY; 2.数组类型参数, 可选类型:ARRAY | BOOL | |
nth(ARG,I) | 获取第 i 个数值 | 1.参与计算的参数, 可选类型:ANY; 2.整数类型参数, 可选类型:NUMBER | ANY | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
set_collect(ARG) | 聚合函数,把 arg 的参数收集为去重数组 | 参与计算的参数, 可选类型:ANY | ARRAY | impala hive spark oracle redshift sqlserver tidb mysql mongodb maxcompute |
set_collect_flatten(ARR) | 聚合函数,把 arr 的参数收集打平为去重数组 | 数组类型参数, 可选类型:ARRAY | ARRAY | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
set_union(ARR1,ARR2) | 计算两个数组的去重并集 | 1.第1个数组, 可选类型:ARRAY; 2.第2个数组, 可选类型:ARRAY | ARRAY | impala hive spark oracle redshift sqlserver tidb mysql db2 mongodb maxcompute |
case when condition then result1 [else result2] end | 该函数根据 condition 条件表达式的返回结果进行输出。当 condition 为 true 时,返回 result1。当 condition 为 false 时,返回 result2,else 分支不是必须存在的。示例 case when {code} = 1 then '通过' else '未通过' end | condition 是一个返回值为布尔类型的表达式 | ANY | |
filter(where condition) | 该函数根据 condition 的条件表达式的结果进行筛选。如果 condition 条件返回 true,则当前记录符合筛选条件。 示例 count(1) filter (where state = 'authorized') | condition 是一个返回值为布尔类型的表达式 | ARRAY | |
calculate(expr) | 该函数表示优先计算聚合表达式,示例 SUM({energy}) FILTER (WHERE {logindate} > CALCULATE(min({logindate}))) | 参数为聚合表达式 | ANY | mongo、hive、impala、Kylin 开源版、hbase、phoenix、elastic search、solr |