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)結果如下圖所示:

