Skip to content

函数列表

涵盖的数据源:presto、impala、hive、spark、greenplum、oracle、postgresql、redshift、sqlserver、tidb、mysql、db2、mongodb、maxcompute

数字函数

函数名描述参数说明返回值类型不支持数据源
abs(N)绝对值运算。例如:abs(-1),返回数字类型:1数字类型参数, 可选类型:NUMBERNUMBER
ceil(N)获取大于等于指定数值的最小整数值数字类型参数, 可选类型:NUMBERNUMBER
floor(N)获取小于等于指定数值的最小整数数字类型参数, 可选类型:NUMBERNUMBER
median(N)获取指定数值列的中位数数字类型参数, 可选类型:NUMBERNUMBERimpala hive spark
sqlserver tidb mysql
mod(DIVIDEND,DIVISOR)取模运算,参数可以是小数。例如:mod(12.3, 5),返回数字类型:2.31.被除数, 可选类型:NUMBER;2.除数, 可选类型:NUMBERNUMBER
growth_rate(CURRENT,PREVIOUS)增长率1.新值, 可选类型:NUMBER;
2.前值, 可选类型:NUMBER
NUMBER
percentile(N,PERCENT)计算百分位数1.数字类型参数, 可选类型:NUMBER;
2.内部参数, 可选类型:NUMBER
NUMBERimpala hive spark
sqlserver tidb mysql
mongodb maxcompute
power(BASE,EXPONENT)乘方运算。例如:power(2,3),返回数字类型:81.底数, 可选类型: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数字类型参数, 可选类型:NUMBERNUMBER
sqrt(N)平方根运算数字类型参数, 可选类型:NUMBERNUMBER
cbrt(N)立方根运算数字类型参数, 可选类型: NUMBERNUMBERmysql oracle sqlserver
db2 impala tidb
mongodb
acos(N)返回 N 的反余弦值, 以弧度表示, N 必须是 [-1, 1] 之间的值, 例如: acos(0.5) = 1.0471975511966数字类型参数, 可选类型: NUMBERNUMBER
asin(N)返回 N 的反正弦值, 以弧度表示, N 必须是 [-1, 1] 之间的值, 例如: asin(0.5) = 0.523598775598299数字类型参数, 可选类型: NUMBERNUMBER
atan(N)返回 N 的反正切值, 以弧度表示, 例如: atan(1) = 0.785398163397448数字类型参数, 可选类型: NUMBERNUMBER
atan2(ARG1, ARG2)返回 arg1/arg2 的反正切值, 以弧度表示, 例如: atan2(2, 2) = 0.785398163397448数字类型参数, 可选类型: NUMBERNUMBERhive
cos(N)返回 N 的余弦值, N 表示弧度, 例如: cos(pi()/3) = 0.5数字类型参数, 可选类型: NUMBERNUMBER
cot(N)返回 N 的余切值, N 表示弧度, N 不能为 0, 例如: cot(pi()/4) = 1数字类型参数, 可选类型: NUMBERNUMBER
sin(N)返回 N 的正弦值, N 表示弧度, 例如: sin(pi()/6) = 0.5数字类型参数, 可选类型: NUMBERNUMBER
tan(N)返回 N 的正切值, N 表示弧度, 例如: tan(pi()/4) = 1数字类型参数, 可选类型: NUMBERNUMBER
cosh(N)返回 N 的双曲余弦值, 例如: cosh(1) = 1.5430806348152437数字类型参数, 可选类型: NUMBERNUMBERpostgres greenplum mysql
sqlserver hive tidb
mongodb redshift
sinh(N)返回 N 的双曲正弦值, 例如: sinh(1) = 0.8686709614860095数字类型参数, 可选类型: NUMBERNUMBERpostgres greenplum mysql
sqlserver hive tidb
presto mongodb redshift
tanh(N)返回 N 的双曲正切值, 例如: tanh(1) = 0.7615941559557649数字类型参数, 可选类型: NUMBERNUMBERpostgres greenplum mysql
sqlserver hive tidb
mongodb redshift
degrees(N)把弧度转为角度, N 表示弧度数字类型参数, 可选类型: NUMBERNUMBERoracle
radians(N)把角度转为弧度, N 表示角度数字类型参数, 可选类型: NUMBERNUMBERoracle
pi()π 常量, 等于 3.14159265358979NUMBERorace db2
exp(N)e 的 N 次幂, e 为自然对数的底数, exp(1) = 2.171828182845904数字类型参数, 可选类型: NUMBERNUMBER
ln(N)返回 N 的自然对数, 自然对数以常数项 e(2.71828182845904) 为底, N 要求大于 0, 例如: ln(1) = 0数字类型参数, 可选类型: NUMBERNUMBER
log(BASE, N)返回以 BASE 为底的对数, BASE 必须大于 0, 且不能为 1, N 必须大于 0, 例如: log(3, 9) = 2BASE, 可选类型: NUMBER
N, 可选类型: NUMBER
NUMBERdb2 redshift
log2(N)返回以 2 为底的对数, N 必须大于 0, 例如: log2(4) = 2数字类型参数, 可选类型: NUMBERNUMBERdb2 redshift
log10(N)返回以 10 为底的对数, N 必须大于 0, 例如: log10(100) = 2数字类型参数, 可选类型: NUMBERNUMBER
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'文本类型参数, 可选类型:STRINGSTRING
initcap(S)对指定字符串做格式化操作,将字符串中的每个单词首字母变为大写,其他字母变为小写文本类型参数, 可选类型:STRINGSTRINGtidb mongodb
length(S)计算字符串的长度文本类型参数, 可选类型:STRINGNUMBER
lower(S)将指定字符串的所有字符修改为小写文本类型参数, 可选类型:STRINGSTRING
position(S,PATTERN)获取子字符串在指定字符串中第一次出现的位置1.文本类型参数, 可选类型:STRING;
2.内部参数, 可选类型:STRING
NUMBER
to_string(ARG)把输入的字段或者值转换成文本参与计算的参数, 可选类型:ANYSTRING
trim(S)去掉字符串首尾的空格文本类型参数, 可选类型:STRINGSTRING
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)将指定字符串的所有字符修改为大写文本类型参数, 可选类型:STRINGSTRING
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 ] )NUMBERimpala hive skqrk
oracle tidb mysql
mongodb
rank()窗口函数,返回当前窗口的排名(保持间隔),计数从1开始,排名相同数字相同,后面的排名会跳跃,比如1、2、2、4。用法:rank() OVER( [ PARTITION BY expr1 ] ORDER BY expr2 [ DESC ] )NUMBERimpala hive
skqrk tidb mysql
mongodb
dense_rank()窗口函数,返回当前窗口的排名(不保持间隔),计数从1开始,排名相同数字相同,后面的排名不跳跃,比如1、2、2、3。用法:dense_rank() OVER( [ PARTITION BY expr1 ] ORDER BY expr2 [ DESC ] )NUMBERimpala hive
skqrk tidb mysql
mongodb
lag(ARG,I)窗口函数,向前获得相对于当前记录指定 i 距离的那条记录的 arg 数据1.参与计算的参数, 可选类型:ANY;
2.整数类型参数, 可选类型:NUMBER
ANYimpala hive
skqrk tidb mysql
mongodb
lead(ARG,I)窗口函数,向后获得相对于当前记录指定 i 距离的那条记录的 arg 数据1.参与计算的参数, 可选类型:ANY;
2.整数类型参数, 可选类型:NUMBER
ANYimpala hive
skqrk tidb mysql
mongodb

日期函数

函数名描述参数说明返回值类型不支持数据源
add_day(T,I)返回从起始日期算起,数值字段对应天数之后的日期,如果数值字段是负数,则返回对应天数之前的日期。例如:add_day('2018-02-02',3),返回时间类型:2018-02-051.时间类型参数, 可选类型:DATE;
2.整数类型参数, 可选类型:NUMBER
DATE
add_hour(T,I)返回从起始时间算起,数值字段对应小时数之后的时间,如果数值字段是负数,则返回对应小时数之前的时间。例如:add_hour('2018-02-02 08:30:00.000',3),返回时间类型:2018-02-02 11:30:00.0001.时间类型参数, 可选类型:DATE;
2.整数类型参数, 可选类型:NUMBER
DATE
add_minute(T,I)返回从起始时间算起,数值字段对应分钟数之后的时间,如果数值字段是负数,则返回对应分钟数之前的时间。例如:add_minute('2018-02-02 08:30:00.000',3),返回时间类型:2018-02-02 08:33:00.0001.时间类型参数, 可选类型:DATE;
2.整数类型参数, 可选类型:NUMBER
DATE
add_month(T,I)返回从起始日期算起,数值字段对应月数之后的日期,如果数值字段是负数,则返回对应月数之前的日期。例如:add_month('2018-02-02',3),返回时间类型:2018-05-021.时间类型参数, 可选类型:DATE;
2整数类型参数, 可选类型:NUMBER
DATE
add_quarter(T,I)返回从起始日期算起,数值字段对应季度数之后的日期,如果数值字段是负数,则返回对应季度数之前的日期。例如:add_quarter('2018-02-02',3),返回时间类型:2018-05-021.时间类型参数, 可选类型:DATE;
2.整数类型参数, 可选类型:NUMBER
DATE
add_week(T,I)返回从起始日期算起,数值字段对应星期数之后的日期,如果数值字段是负数,则返回对应星期数之前的日期。例如:add_week('2018-02-02',3),返回时间类型:2018-05-021.时间类型参数, 可选类型:DATE;
2.整数类型参数, 可选类型:NUMBER
DATE
add_year(T,I)返回从起始日期算起,数值字段对应年数之后的日期,如果数值字段是负数,则返回对应年数之前的日期。例如:add_year('2018-02-02',3),返回时间类型:2021-02-021.时间类型参数, 可选类型:DATE;
2.整数类型参数, 可选类型:NUMBER
DATE
add_year_keep_woy(T,I)和 add_year 类似,但是调整日期使得年中周数保持不变1.时间类型参数, 可选类型:DATE;
2.整数类型参数, 可选类型:NUMBER
DATEmysql tidb
sqlserver redshift spark
hive impala presto
db2 mongodb maxcompute
diff_in_day(START,END)比较两个日期在天数上的差异。例如:diff_in_day('2015-02-03', '2018-02-03'),返回整数类型:10951.指定起始, 可选类型:DATE;
2.指定结束, 可选类型:DATE
NUMBER
diff_in_hour(START,END)比较两个时间在小时上的差异。例如:diff_in_hour('2015-03-24 16:32:32', '2018-02-02 12:34:43'),返回整数类型:251001.指定起始, 可选类型:DATE;
2.指定结束, 可选类型:DATE
NUMBER
diff_in_minute(START,END)比较两个时间在分钟上的差异。例如:diff_in_minute('2015-03-24 16:32:32', '2018-02-02 12:34:43'),返回整数类型:15060021.指定起始, 可选类型:DATE;
2.指定结束, 可选类型:DATE
NUMBER
diff_in_month(START,END)比较两个日期在月份上的差异。例如:diff_in_month('2015-02-03', '2018-02-03'),返回整数类型:361.指定起始, 可选类型:DATE;
2.指定结束, 可选类型:DATE
NUMBER
diff_in_year(START,END)比较两个时间在年份上的差异。例如:diff_in_year('2015-02-03', '2018-02-03'),返回整数类型:31.指定起始, 可选类型:DATE;
2.指定结束, 可选类型:DATE
NUMBER
end_of_month(T)获取时间字段所在的月末最后一天的起始时间时间类型参数, 可选类型:DATEDATE
extract_day(T)获取参数中的天部分,表示当天是当月是第几天。例如:extract_day('2018-02-02'),返回整数类型:2时间类型参数, 可选类型:DATENUMBER
extract_dow(T)获取参数中的天部分,表示当天是星期几。例如:extract_dow('2018-02-02'),返回整数类型:5时间类型参数, 可选类型:DATENUMBER
extract_doy(T)获取参数中的天部分,表示当天是一年是第几天。例如:extract_doy('2018-02-02'),返回整数类型:33时间类型参数, 可选类型:DATENUMBER
extract_hour(T)获取参数中的小时部分,表示当前小时数。例如:extract_hour('2018-02-03 13:23:21'),返回整数类型:13时间类型参数, 可选类型:DATENUMBER
extract_minute(T)获取参数中的分钟部分,表示当前分钟数。例如:extract_minute('2018-02-03 13:23:21'),返回整数类型:02时间类型参数, 可选类型:DATENUMBER
extract_month(T)获取参数中的月份部分。例如:extract_month('2018-02-02'),返回整数类型:2时间类型参数, 可选类型:DATENUMBER
extract_quarter(T)获取参数中的季度部分。例如:extract_quarter('2018-02-02'),返回整数类型:1时间类型参数, 可选类型:DATENUMBER
extract_second(T)获取参数中的秒部分,表示当前秒数。例如:extract_second('2018-02-03 13:23:21'),返回整数类型:03时间类型参数, 可选类型:DATENUMBER
extract_week(T)获取参数中的星期部分,表示当天所属星期是一年是第几个星期。例如:extract_week('2018-02-02'),返回整数类型:4时间类型参数, 可选类型:DATENUMBER
extract_year(T)获取参数中的年份部分。例如:extract_year('2018-02-02'),返回整数类型:2018时间类型参数, 可选类型:DATENUMBER
month_weekday_count(YEAR,MONTH)获取参数所在月份的工作日天数。例如:month_weekday_count(2018, 2),返回整数类型:201.年份, 可选类型:NUMBER;
2.月份, 可选类型:NUMBER
NUMBERmysql tidb
sqlserver redshift oracle
impala hive spark
db2 mongodb
maxcompute
now()返回当前时间,时间类型无参数DATE
parse_time(S,LITERAL_PATTERN)使用 literal_pattern 将 s 参数解析成时间类型1.文本类型参数, 可选类型:STRING;
2.指定模式, 可选类型:STRING
DATEsqlserver
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'时间类型参数, 可选类型:DATEDATE
trunc_hour(T)将时间列截取到小时,更细粒度全都置为0。例如:trunc_hour('2018-02-02 12:23:32'),返回时间类型:'2018-02-02 12:00:00'时间类型参数, 可选类型:DATEDATE
trunc_minute(T)将时间列截取到分钟,更细粒度全都置为0。例如:trunc_minute('2018-02-02 12:23:32'),返回时间类型:'2018-02-02 12:23:00'时间类型参数, 可选类型:DATEDATE
trunc_month(T)将时间或者日期列截取到月,日期置为1日。例如:trunc_month('2018-02-02 12:23:32'),返回日期类型:'2018-02-01'时间类型参数, 可选类型:DATEDATE
trunc_millisecond(T)将时间列截取到毫秒,更细粒度全都置为0。例如:trunc_millisecond('2018-02-02 12:23:32.123'),返回时间类型:'2018-02-02 12:23:32.123'时间类型参数, 可选类型:DATEDATE
trunc_quarter(T)将时间或者日期列截取到季度,月份置为季度中的第一个月,日期置为1日。例如:trunc_quarter('2018-05-02 12:23:32'),返回日期类型:'2018-04-01'时间类型参数, 可选类型:DATEDATE
trunc_second(T)将时间列截取到秒,更细粒度全都置为0。例如:trunc_second('2018-02-02 12:23:32.123'),返回时间类型:'2018-02-02 12:23:32.000'时间类型参数, 可选类型:DATEDATE
trunc_week(T)将时间或者日期列截取到周,月份和日期置为本周的第一天。例如:trunc_week('2018-02-02'),返回日期类型:'2018-01-29'时间类型参数, 可选类型:DATEDATE
trunc_year(T)将时间或者日期列截取到年,月份和日期置为1月1日。例如:trunc_year('2018-02-02 12:23:32'),返回日期类型:'2018-01-01'时间类型参数, 可选类型:DATEDATE

聚合函数

函数名描述参数说明返回值类型不支持数据源
avg(N)获取指定数值列的平均值数字类型参数, 可选类型:NUMBERNUMBER
count(ARG)获取指定列的值的数目参与计算的参数, 可选类型:ANYNUMBER
distinct(ARG)查询列中的唯一值(去重)参与计算的参数, 可选类型:ANYANY
distinct_count(ARG)获取指定列中非重复结果的数目参与计算的参数, 可选类型:ANYNUMBER
max(ARG)获取指定数值列的最大值参与计算的参数, 可选类型:ANYANY
max_by(ARG,COMPARE)获取 compare 列最大那行对应的 arg 列的值,如有多个最大值取随机一个1.参与计算的参数, 可选类型:ANY;
2.对比数值, 可选类型:ANY
ANYimpala hive
spark redshift
sqlserver tidb
mysql db2 mongodb
maxcompute
min(ARG)获取指定数值列的最小值参与计算的参数, 可选类型:ANYANY
min_by(ARG,COMPARE)获取 compare 列最小那行对应的 arg 列的值,如有多个最小值取随机一个1.参与计算的参数, 可选类型:ANY;
2.对比数值, 可选类型:ANY
ANYimpala hive
spark redshift
sqlserver tidb
mysql db2 mongodb
maxcompute
sum(N)获取指定数值列的和数字类型参数, 可选类型:NUMBERNUMBER
corr(ARG1, ARG2)返回两个数字列的相关系数, 例如: (arg1, arg2) = [(1,2),(2,3),(3,4),(4,5),(5,6),(1000,1001)], corr(arg1, arg2) = 11. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.472222222221. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.166666666661. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.51. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.51. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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) = 61. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.6666666666661. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.063231850117096021. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.428571428571428551. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.51. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.51. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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.8333333333333361. ARG1, 可选类型: NUMBER
2. ARG2, 可选类型: NUMBER
NUMBERmysql 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数字类型参数, 可选类型: NUMBERNUMBERtidb
stddev_samp(N)返回数字列的样本标准偏差, 例如: n = [(1000),(1001),(1003),(1004),(1005),(1000)], stddev_samp(n) = 2.1369760566432809数字类型参数, 可选类型: NUMBERNUMBERtidb
var_pop(N)返回数字列的样本标准偏差, 例如: n = [(1000),(1001),(1003),(1004),(1005),(1000)], stddev_samp(n) = 2.1369760566432809数字类型参数, 可选类型: NUMBERNUMBERtidb mongodb
var_samp(N)返回数字列的样本方差(样本标准偏差的平方), 例如: n = [(1000),(1001),(1003),(1004),(1005),(1000)], var_samp(n) = 4.5666666666666667数字类型参数, 可选类型: NUMBERNUMBERtidb mongodb
string_agg(S, DELIMITER)把字段 S 拼接成字符串, 中间用 DELIMITER 进行分割, 其中 oracle 必须带有 within group 子句1. S: 需要拼接的字段,可选类型: ANY
2. DELIMITER: 分隔符, 可选类型: STRING
STRINGmysql 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)分组统计参与计算的参数, 可选类型:ANYANY
if(B,TRUE,FALSE)条件分支判断,后两个参数的类型必需一样。例如:if({score}>=60, '及格', '不及格')1.条件,布尔类型参数, 可选类型:BOOL;
2.条件为真时的值, 可选类型:ANY;
3.条件为假时的值, 可选类型:ANY
ANY
in(ARG,ARR)字段的值是否在列表中1.参与计算的参数, 可选类型:ANY;2.数组类型参数, 可选类型:ARRAYBOOL
isnotnull(ARG)判断指定字段是否为非 null参与计算的参数, 可选类型:ANYBOOL
isnull(ARG)判断指定字段是否为 null参与计算的参数, 可选类型:ANYBOOL
first(ARG)获取指定列中第一个记录的值与计算的参数, 可选类型:ANYANYredshift
sqlserver tidb mysql
db2 mongodb maxcompute
jsonget(JSON,KEY)获取 JSON 的指定 key1.json 类型参数, 可选类型:JSON;
2.指定键值, 可选类型:STRING
STRINGimpala
hive spark oracle
db2 mongodb maxcompute
last(ARG)获取指定列中最后一个记录的值参与计算的参数, 可选类型:ANYANYredshift
sqlserver tidb mysql
db2 mongodb maxcompute
list_collect(ARG)聚合函数,把 arg 的参数收集为数组参与计算的参数, 可选类型:ANYARRAYimpala hive
spark oracle redshift
sqlserver tidb mysql
db2 mongodb maxcompute
list_collect_flatten(ARR)聚合函数,把 arr 的参数收集打平为数组数组类型参数, 可选类型:ARRAYARRAYimpala hive
spark oracle redshift
sqlserver tidb mysql
db2 mongodb maxcompute
list_count(ARR)获取数组长度数组类型参数, 可选类型:ARRAYNUMBERimpala hive
spark oracle redshift
sqlserver tidb mysql
db2 mongodb maxcompute
list_except(ARR1,ARR2)计算两个数组的差集1.第1个数组, 可选类型:ARRAY;
2.第2个数组, 可选类型:ARRAY
ARRAYimpala hive
spark oracle redshift
sqlserver tidb mysql
db2 mongodb maxcompute
list_intersect(ARR1,ARR2)计算两个数组的交集1.第1个数组, 可选类型:ARRAY;2.第2个数组, 可选类型:ARRAYARRAYimpala hive
spark oracle redshift
sqlserver tidb mysql
db2 mongodb maxcompute
list_union(ARR1,ARR2)计算两个数组的并集1.第1个数组, 可选类型:ARRAY;
2.第2个数组, 可选类型:ARRAY
ARRAYimpala 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
ANYimpala hive
spark oracle redshift
sqlserver tidb mysql
db2 mongodb maxcompute
set_collect(ARG)聚合函数,把 arg 的参数收集为去重数组参与计算的参数, 可选类型:ANYARRAYimpala hive
spark oracle redshift
sqlserver tidb mysql mongodb maxcompute
set_collect_flatten(ARR)聚合函数,把 arr 的参数收集打平为去重数组数组类型参数, 可选类型:ARRAYARRAYimpala hive
spark oracle redshift
sqlserver tidb mysql
db2 mongodb maxcompute
set_union(ARR1,ARR2)计算两个数组的去重并集1.第1个数组, 可选类型:ARRAY;
2.第2个数组, 可选类型:ARRAY
ARRAYimpala 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})))
参数为聚合表达式ANYmongo、hive、impala、Kylin 开源版、hbase、phoenix、elastic search、solr

衡石分析平台使用手册