数学函数概览
DLI所支持的数学函数如数学函数所示。
命令格式 | 返回值 | 功能简介 |
|---|---|---|
abs(DOUBLE a) | DOUBLE或INT | 取绝对值。 |
acos(DOUBLE a) | DOUBLE | 返回给定角度a的反余弦值。 |
asin(DOUBLE a) | DOUBLE | 返回给定角度a的反正弦值。 |
atan(DOUBLE a) | DOUBLE | 返回给定角度a的反正切值。 |
bin(BIGINT a) | STRING | 返回二进制格式。 |
bround(DOUBLE a) | DOUBLE | HALF_EVEN模式四舍五入,与传统四舍五入方式的区别在于,对数字5进行操作时,由前一位数字来决定,前一位数字为奇数,增加一位,前一位数字为偶数,舍弃一位。例如:bround(7.5)=8.0,bround(6.5)=6.0 |
bround(DOUBLE a, INT d) | DOUBLE | 保留小数点后d位,d位之后数字以HALF_EVEN模式四舍五入。与传统四舍五入方式的区别在于,对数字5进行操作时,由前一位数字来决定,前一位数字为奇数,增加一位,前一位数字为偶数,舍弃一位。例如:bround(8.25, 1) =8.2, bround(8.35, 1) =8.4。 |
cbrt(DOUBLE a) | DOUBLE | 返回a的立方根。 |
ceil(DOUBLE a) | DECIMAL | 将参数向上舍入为最接近的整数。例如:ceil(21.2),返回22。 |
conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base) | STRING | 进制转换,将from_base进制下的num转化为to_base进制下面的数。例如:将5从十进制转换为四进制,conv(5,10,4)=11。 |
cos(DOUBLE a) | DOUBLE | 返回给定角度a的余弦值。 |
cot1(DOUBLE a) | DOUBLE或DECIMAL类型 | 计算number的余切函数,输入为弧度值。 |
degrees(DOUBLE a) | DOUBLE | 返回弧度所对应的角度。 |
e() | DOUBLE | 返回e的值。 |
exp(DOUBLE a) | DOUBLE | 返回e的a次方。 |
factorial(INT a) | BIGINT | 返回a的阶乘。 |
floor(DOUBLE a) | BIGINT | 对给定数据进行向下舍入最接近的整数。例如:floor(21.2),返回21。 |
greatest(T v1, T v2, ...) | DOUBLE | 返回列表中的最大值。 |
hex(BIGINT a) hex(STRING a) | STRING | 将整数或字符转换为十六进制格式。 |
least(T v1, T v2, ...) | DOUBLE | 返回列表中的最小值。 |
ln(DOUBLE a) | DOUBLE | 返回给定数值的自然对数。 |
log(DOUBLE base, DOUBLE a) | DOUBLE | 返回给定底数及指数返回自然对数。 |
log10(DOUBLE a) | DOUBLE | 返回给定数值的以10为底自然对数。 |
log2(DOUBLE a) | DOUBLE | 返回给定数值的以2为底自然对数。 |
median(colname) | DOUBLE或DECIMAL | 计算中位数。 |
negative(INT a) | DECIMAL或INT | 返回a的相反数,例如negative(2),返回-2。 |
percentile(colname,DOUBLE p) | DOUBLE或ARRAY | 计算精确百分位数,适用于小数据量。先对指定列升序排列,然后取精确的第p位百分数。p必须在0和1之间。 |
percentile_approx (colname,DOUBLE p) | DOUBLE或ARRAY | 计算近似百分位数,适用于大数据量。先对指定列升序排列,然后取第p位百分数对应的值。 |
pi() | DOUBLE | 返回pi的值。 |
pmod(INT a, INT b) | DECIMAL或INT | 返回a除b的余数的绝对值。 |
positive(INT a) | DECIMAL、DOUBLE或INT | 返回a的值,例如positive(2),返回2。 |
pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p) | DOUBLE | 返回a的p次幂。 |
radians(DOUBLE a) | DOUBLE | 返回角度所对应的弧度。 |
rand(INT seed) | DOUBLE | 返回大于或等于0且小于1的平均分布随机数。如果指定种子seed,则会得到一个稳定的随机数序列。 |
round(DOUBLE a) | DOUBLE | 四舍五入。 |
round(DOUBLE a, INT d) | DOUBLE | 小数部分d位之后数字四舍五入,例如round(21.263,2),返回21.26。 |
shiftleft(BIGINT a, INT b) | INT | 有符号左边移,将a的二进制数按位左移b位。 |
shiftright(BIGINT a, INT b) | INT | 有符号右移,将a的二进制数按位右移b位。 |
shiftrightunsigned(BIGINT a, INT b) | INT | 无符号右移,将a的二进制数按位右移b位。 |
sign(DOUBLE a) | DOUBLE | 返回a所对应的正负号,a为正返回1.0,a为负,返回-1.0,否则返回0.0。 |
sin(DOUBLE a) | DOUBLE | 返回给定角度a的正弦值。 |
sqrt(DOUBLE a) | DOUBLE | 返回数值的平方根。 |
tan(DOUBLE a) | DOUBLE | 返回给定角度a的正切值。 |

