更新时间:2023-11-03 GMT+08:00

数学函数概览

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

表1 数学函数

函数

命令格式

返回值

功能简介

abs

abs(DOUBLE a)

DOUBLE或INT

取绝对值。

acos

acos(DOUBLE a)

DOUBLE

返回给定角度a的反余弦值。

asin

asin(DOUBLE a)

DOUBLE

返回给定角度a的反正弦值。

atan

atan(DOUBLE a)

DOUBLE

返回给定角度a的反正切值。

bin

bin(BIGINT a)

STRING

返回二进制格式。

bround

bround(DOUBLE a)

DOUBLE

HALF_EVEN模式四舍五入,与传统四舍五入方式的区别在于,对数字5进行操作时,由前一位数字来决定,前一位数字为奇数,增加一位,前一位数字为偶数,舍弃一位。例如:bround(7.5)=8.0,bround(6.5)=6.0

bround

bround(DOUBLE a, INT d)

DOUBLE

保留小数点后d位,d位之后数字以HALF_EVEN模式四舍五入。与传统四舍五入方式的区别在于,对数字5进行操作时,由前一位数字来决定,前一位数字为奇数,增加一位,前一位数字为偶数,舍弃一位。例如:bround(8.25, 1) = 8.2, bround(8.35, 1) = 8.4。

cbrt

cbrt(DOUBLE a)

DOUBLE

返回a的立方根。

ceil

ceil(DOUBLE a)

DECIMAL

将参数向上舍入为最接近的整数。例如:ceil(21.2),返回22。

conv

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

cos(DOUBLE a)

DOUBLE

返回给定角度a的余弦值。

cot1

cot1(DOUBLE a)

DOUBLE或DECIMAL类型

计算number的余切函数,输入为弧度值。

degress

degrees(DOUBLE a)

DOUBLE

返回弧度所对应的角度。

e

e()

DOUBLE

返回e的值。

exp

exp(DOUBLE a)

DOUBLE

返回e的a次方。

factorial

factorial(INT a)

BIGINT

返回a的阶乘。

floor

floor(DOUBLE a)

BIGINT

对给定数据进行向下舍入最接近的整数。例如:floor(21.2),返回21。

greatest

greatest(T v1, T v2, ...)

DOUBLE

返回列表中的最大值。

hex

hex(BIGINT a) hex(STRING a)

STRING

将整数或字符转换为十六进制格式。

least

least(T v1, T v2, ...)

DOUBLE

返回列表中的最小值。

ln

ln(DOUBLE a)

DOUBLE

返回给定数值的自然对数。

log

log(DOUBLE base, DOUBLE a)

DOUBLE

返回给定底数及指数返回自然对数。

log10

log10(DOUBLE a)

DOUBLE

返回给定数值的以10为底自然对数。

log2

log2(DOUBLE a)

DOUBLE

返回给定数值的以2为底自然对数。

median

median(colname)

DOUBLE或DECIMAL

计算中位数。

negative

negative(INT a)

DECIMAL或INT

返回a的相反数,例如negative(2),返回-2。

percentlie

percentile(colname,DOUBLE p)

DOUBLE或ARRAY

计算精确百分位数,适用于小数据量。先对指定列升序排列,然后取精确的第p位百分数。p必须在0和1之间。

percentlie_approx

percentile_approx (colname,DOUBLE p)

DOUBLE或ARRAY

计算近似百分位数,适用于大数据量。先对指定列升序排列,然后取第p位百分数对应的值。

pi

pi()

DOUBLE

返回pi的值。

pmod

pmod(INT a, INT b)

DECIMAL或INT

返回a除b的余数的绝对值。

positive

positive(INT a)

DECIMAL、DOUBLE或INT

返回a的值,例如positive(2),返回2。

pow

pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p)

DOUBLE

返回a的p次幂。

radians

radians(DOUBLE a)

DOUBLE

返回角度所对应的弧度。

rand

rand(INT seed)

DOUBLE

返回大于或等于0且小于1的平均分布随机数。如果指定种子seed,则会得到一个稳定的随机数序列。

round

round(DOUBLE a)

DOUBLE

四舍五入。

round

round(DOUBLE a, INT d)

DOUBLE

小数部分d位之后数字四舍五入,例如round(21.263,2),返回21.26。

shiftleft

shiftleft(BIGINT a, INT b)

INT

有符号左边移,将a的二进制数按位左移b位。

shiftright

shiftright(BIGINT a, INT b)

INT

有符号右移,将a的二进制数按位右移b位。

shiftrightunsigned

shiftrightunsigned(BIGINT a, INT b)

INT

无符号右移,将a的二进制数按位右移b位。

sign

sign(DOUBLE a)

DOUBLE

返回a所对应的正负号,a为正返回1.0,a为负,返回-1.0,否则返回0.0。

sin

sin(DOUBLE a)

DOUBLE

返回给定角度a的正弦值。

sqrt

sqrt(DOUBLE a)

DOUBLE

返回数值的平方根。

tan

tan(DOUBLE a)

DOUBLE

返回给定角度a的正切值。