更新时间:2025-01-22 GMT+08:00

数学函数概览

DLI所支持的数学函数如数学函数所示。

表1 数学函数

命令格式

返回值

功能简介

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的正切值。