1. 概述
本文介绍 SparkSQL 中的数学函数语法。
2. ROUND-四舍五入取整
round(DOUBLE a):返回对 a 四舍五入的 BIGINT 值,取整。
round(DOUBLE a, INT d):返回 DOUBLE 型 d 的保留 n 位小数的 DOUBLW 型的近似值。
示例 1:select round(3.1415926)
示例 2:select round(3.1415926,2)
3. BROUND
bround(DOUBLE a):银行家舍入法(1~4:舍,6~9:进,5->前位数是偶:舍,5->前位数是 奇:进)。
bround(DOUBLE a, INT d):银行家舍入法,保留 d 位小数
示例1:select bround(4.5) 结果为:4
示例2:select bround(3.145,2) 结果为:3.14
4. FLOOR-向下取整
5. CEIL-向上取整
ceil(DOUBLE a):求其不小于给定实数的最小整数。
ceiling(DOUBLE a):求其不小于给定实数的最小整数.
示例 1:select ceil(-4.1)
示例 2:select ceiling(-4.1)
推荐使用 FineDataLink 新增计算列 中的 CEILING 函数。
6. RAND-返回0-1 之间的随机数
rand():返回一个 0 到 1 范围内的随机数。
rand(INT seed):返回一个 0 到 1 范围内的随机数。如果指定种子 seed,则会等到一个稳定 的随机数序列。
示例 1:select rand(),rand()
示例 2:select rand(8),rand(8)
7. EXP-e的n次幂
exp(DOUBLE a), exp(DECIMAL a):返回 e 的 a 幂次方, a 可为小数。
示例:select exp(0),exp(1.11)
8. ln-以e为底的对数
ln(DOUBLE a), ln(DECIMAL a):以自然常数 e 为底 d 的对数,a 可为小数。
示例:select ln(2),ln(2.1)
9. LOG10-以10为底的对数
log10(DOUBLE a) 或者 log10(DECIMAL a):以 10 为底 d 的对数,a 可为小数。
示例:在数据转换中使用 SparkSQL ,输入语句:select log10(10),如下图所示:
在数据转换中使用 SparkSQL ,输入语句:selectlog10(10.11),如下图所示:
10. LOG2-以2为底的对数
log2(DOUBLE a)或者 log2(DECIMAL a):以 2 为底数 d 的对数,a 可为小数。
示例:select log2(2),结果如下图所示:
11. LOG-任意底数对应的对数值
log(DOUBLE base, DOUBLE a),log(DECIMAL base, DECIMAL a):以 base 为底的 a 对数。
示例:select col1,COL2,log(col1,COL2) from TV
12. POW-乘幂
pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p):计算 a 的 p 次幂。
示例:select col1,COL2,pow(col1,COL2) from TV
13. SQRT-平方根
sqrt(DOUBLE a), sqrt(DECIMAL a):计算 a 的平方根。
示例:select col1,COL2,sqrt(col1),sqrt(col2) from TV
14. ABS-绝对值
abs(DOUBLE a),abs(DECIMAL a):计算 a 的绝对值。
示例:select abs(-3.1),abs(0)
15. PMOD-取余
pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b):a 除以 b 取余。
示例:select pmod(2,3),pmod(-4,2)
16. 三角函数
17. 数学常量
e():数学常量 e。
pi():数学常量Π。
示例:select e(),pi()结果如下图所示:
18. NEGATIVE -相反数
negative(INT a) 或者 negative(DOUBLE a):返回 a 的相反数。
示例:select negative(1)结果如下图所示:
19. FACTORIAL-阶乘
factorial(INT a):求 a 的阶乘。
示例:select factorial(5) ,结果如下图所示:
20. CBRT-立方根
cbrt(DOUBLE a):求 a 的立方根。
示例 :select cbrt(512)结果如下图所示: