本文將為您介紹MaxCompute支援的數學函數,包括函數的命令格式、參數說明以及使用樣本。通過使用這些數學函數,您可以進行資料計算、資料轉換等各種操作。
MaxCompute SQL支援的數學函數如下。
函數 | 功能 |
計算絕對值。 | |
計算反餘弦值。 | |
計算expr1/expr2的反正切值。 | |
計算反正弦值。 | |
計算反正切值。 | |
計算二進位代碼值。 | |
計算立方根值。 | |
計算向上取整值。 | |
計算進位轉換值。 | |
計算皮爾遜係數。 | |
計算餘弦值。 | |
計算雙曲餘弦值。 | |
計算餘切值。 | |
將弧度轉換為角度。 | |
返回e的值。 | |
計算指數值。 | |
計算階乘值。 | |
過濾ARRAY數組中的元素。 | |
計算向下取整值。 | |
將數字轉化為指定格式的字串。 | |
返回整數或字串的十六進位格式。 | |
判斷運算式的值是否為NaN。 | |
計算自然對數。 | |
計算log對數值。 | |
計算以10為底的對數。 | |
計算以2為底的對數。 | |
返回運算式的負值。 | |
返回π的值。 | |
返回運算式的值。 | |
計算冪值。 | |
將角度轉換為弧度。 | |
返回隨機數。 | |
返回四捨五入到指定小數點位置的值。 | |
計算按位左移值。 | |
計算按位右移值。 | |
計算無符號按位右移值。 | |
返回輸入參數的符號。 | |
計算正弦值。 | |
計算雙曲正弦值。 | |
計算平方根。 | |
計算正切值。 | |
計算雙曲正切值。 | |
返回截取到指定小數點位置的值。 | |
返回十六進位字串所代表的字串。 | |
返回指定欄位值落入的分組編號。 |
取餘數計算等更多計算請參見算術運算子。
注意事項
升級到MaxCompute 2.0後,產品擴充了部分函數。如果您用到的函數涉及新資料類型(TINYINT、SMALLINT、INT、FLOAT、VARCHAR、TIMESTAMP或BINARY),在使用擴充函數時,需要執行如下語句開啟新資料類型開關:
樣本資料
為便於理解各函數的使用方法,本文為您提供來源資料,基於來源資料提供函數相關樣本。建立表mf_math_fun_t,並添加資料,命令樣本如下。
create table if not exists mf_math_fun_t(
int_data int,
bigint_data bigint,
double_data double,
decimal_data decimal,
float_data float,
string_data string
);
insert into mf_math_fun_t values
(null, -10, 0.525, 0.525BD, cast(0.525 as float), '10'),
(-20, null, -0.1, -0.1BD, cast(-0.1 as float), '-10'),
(0, -1, null, 20.45BD, cast(-1 as float), '30'),
(-40, 4, 0.89, null, cast(0.89 as float), '-30'),
(5, -50, -1, -1BD, null, '50'),
(-60, 6, 1.5, 1.5BD, cast(1.5 as float), '-50'),
(-1, -70, -7.5, -7.5BD, cast(-7.5 as float),null ),
(-80, 1, -10.2, -10.2BD, cast(-10.2 as float), '-1' ),
(9, -90, 2.58, 2.58BD, cast(2.58 as float), '0'),
(-100, 10, -5.8, -5.8BD, cast(-5.8 as float), '-90');
查詢表mf_math_fun_t中的資料,命令樣本如下:
select * from mf_math_fun_t;
--返回結果。
+----------+-------------+-------------+--------------+------------+-------------+
| int_data | bigint_data | double_data | decimal_data | float_data | string_data |
+----------+-------------+-------------+--------------+------------+-------------+
| NULL | -10 | 0.525 | 0.525 | 0.525 | 10 |
| -20 | NULL | -0.1 | -0.1 | -0.1 | -10 |
| 0 | -1 | NULL | 20.45 | -1 | 30 |
| -40 | 4 | 0.89 | NULL | 0.89 | -30 |
| 5 | -50 | -1.0 | -1 | NULL | 50 |
| -60 | 6 | 1.5 | 1.5 | 1.5 | -50 |
| -1 | -70 | -7.5 | -7.5 | -7.5 | NULL |
| -80 | 1 | -10.2 | -10.2 | -10.2 | -1 |
| 9 | -90 | 2.58 | 2.58 | 2.58 | 0 |
| -100 | 10 | -5.8 | -5.8 | -5.8 | -90 |
+----------+-------------+-------------+--------------+------------+-------------+
ABS
命令格式
bigint|double|decimal abs(<number>)
命令說明
計算number的絕對值。
參數說明
number:必填。DOUBLE、BIGINT或DECIMAL類型。輸入為STRING時,會隱式轉換為DOUBLE類型後參與運算。
說明當輸入BIGINT類型的值超過BIGINT的最大表示範圍時,會返回DOUBLE類型,但可能會損失精度。
傳回值說明
傳回值類型取決於輸入參數的類型。返回規則如下:
number為DOUBLE、BIGINT或DECIMAL類型時會返回相應的類型。
number為STRING類型時,返回DOUBLE類型。
number為NULL,則返回NULL。
樣本
待用資料樣本
--返回NULL。 select abs(null); --返回1。 select abs(-1); --返回1.2。 select abs(-1.2); --返回2.0。 select abs("-2"); --返回1.2232083745629837e32。 select abs(122320837456298376592387456923748); --取tbl1表內id欄位的絕對值。下面是一個完整的ABS函數在SQL中使用的樣本,其他內建函數(除視窗函數和彙總函式外)的使用方式與其類似。 select abs(id) from tbl1;
表資料樣本
基於樣本資料,計算絕對值,命令樣本如下。
select abs(bigint_data) as bigint_new, abs(double_data) as double_new, abs(decimal_data) as decimal_new, abs(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | 10 | 0.525 | 0.525 | 10.0 | | NULL | 0.1 | 0.1 | 10.0 | | 1 | NULL | 20.45 | 30.0 | | 4 | 0.89 | NULL | 30.0 | | 50 | 1.0 | 1 | 50.0 | | 6 | 1.5 | 1.5 | 50.0 | | 70 | 7.5 | 7.5 | NULL | | 1 | 10.2 | 10.2 | 1.0 | | 90 | 2.58 | 2.58 | 0.0 | | 10 | 5.8 | 5.8 | 90.0 | +------------+------------+-------------+------------+
ACOS
命令格式
double|decimal acos(<number>)
命令說明
計算number的反餘弦函數。
參數說明
number:必填。取值範圍為[-1,1]。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
傳回值類型取決於輸入參數的類型。範圍在0~π之間。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值不在[-1,1]範圍內時,返回NULL。Hive相容模式下返回NaN。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回0.5155940062460905。 select acos("0.87"); --返回1.5707963267948966。 select acos(0); --返回NULL。 select acos(null);
表資料樣本
基於樣本資料,計算反餘弦值,命令樣本如下。
select acos(bigint_data) as bigint_new, acos(double_data) as double_new, acos(decimal_data) as decimal_new, acos(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+-------------------+--------------------+--------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +-------------------+--------------------+--------------------+---------------------+ | NULL | 1.0180812136981134 | 1.0180812136981134 | NULL | | NULL | 1.6709637479564565 | 1.6709637479564565 | NULL | | 3.141592653589793 | NULL | NULL | NULL | | NULL | 0.4734511572720662 | NULL | NULL | | NULL | 3.141592653589793 | 3.141592653589793 | NULL | | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | 3.141592653589793 | | NULL | NULL | NULL | 1.5707963267948966 | | NULL | NULL | NULL | NULL | +-------------------+--------------------+--------------------+---------------------+
ATAN2
命令格式
double atan2(<expr1>, <expr2>)
命令說明
計算expr1/expr2的反正切函數。
參數說明
expr1:必填。DOUBLE類型。輸入為STRING、BIGINT、DECIMAL類型時,會隱式轉換為DOUBLE類型後參與運算。
expr2:必填。DOUBLE類型。輸入為STRING、BIGINT、DECIMAL類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE類型。範圍在
-π/2~π/2
之間。expr1或expr2值為NULL時,返回NULL。樣本
--返回0.0。 select atan2(0, 0);
ASIN
命令格式
double|decimal asin(<number>)
命令說明
計算number的反正弦函數。
參數說明
number:必填。取值範圍為[-1,1]。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
傳回值類型取決於輸入參數的類型。範圍在
-π/2~π/2
之間。返回規則如下:number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值不在[-1,1]範圍內時,返回NULL。Hive相容模式下返回NaN。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回1.5707963267948966。 select asin(1); --返回-1.5707963267948966。 select asin(-1); --返回NULL。 select asin(null);
表資料樣本
基於樣本資料,計算反正弦值,命令樣本如下。
select asin(bigint_data) as bigint_new, asin(double_data) as double_new, asin(decimal_data) as decimal_new, asin(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+--------------------+---------------------+---------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+---------------------+---------------------+---------------------+ | NULL | 0.5527151130967832 | 0.5527151130967832 | NULL | | NULL | -0.1001674211615598 | -0.1001674211615598 | NULL | | -1.5707963267948966| NULL | NULL | NULL | | NULL | 1.0973451695228305 | NULL | NULL | | NULL | -1.5707963267948966 | -1.5707963267948966 | NULL | | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | NULL | | 1.5707963267948966 | NULL | NULL | -1.5707963267948966 | | NULL | NULL | NULL | 0.0 | | NULL | NULL | NULL | NULL | +--------------------+---------------------+---------------------+---------------------+
ATAN
命令格式
double atan(<number>)
命令說明
計算number的反正切函數。
參數說明
number:必填。DOUBLE類型。輸入為STRING、BIGINT、DECIMAL類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE類型。範圍在
-π/2~π/2
之間。number值為NULL時,返回NULL。樣本
待用資料樣本
--返回0.7853981633974483。 select atan(1); --返回-0.7853981633974483。 select atan(-1); --返回NULL。 select atan(null);
表資料樣本
基於樣本資料,計算反正切值,命令樣本如下。
select atan(bigint_data) as bigint_new, atan(double_data) as double_new, atan(decimal_data) as decimal_new, atan(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+---------------------+----------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+----------------------+----------------------+---------------------+ | -1.4711276743037347 | 0.483447001567199 | 0.483447001567199 | 1.4711276743037347 | | NULL | -0.09966865249116204 | -0.09966865249116204 | -1.4711276743037347 | | -0.7853981633974483 | NULL | 1.521935491607842 | 1.5374753309166493 | | 1.3258176636680326 | 0.7272626879966904 | NULL | -1.5374753309166493 | | -1.550798992821746 | -0.7853981633974483 | -0.7853981633974483 | 1.550798992821746 | | 1.4056476493802699 | 0.982793723247329 | 0.982793723247329 | -1.550798992821746 | | -1.5565115842075 | -1.4382447944982226 | -1.4382447944982226 | NULL | | 0.7853981633974483 | -1.473069419436178 | -1.473069419436178 | -0.7853981633974483 | | -1.5596856728972892 | 1.2010277920014796 | 1.2010277920014796 | 0.0 | | 1.4711276743037347 | -1.4000611153196139 | -1.4000611153196139 | -1.5596856728972892 | +---------------------+----------------------+----------------------+---------------------+
BIN
命令格式
string bin(<number>)
命令說明
返回number的二進位代碼錶示。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。BIGINT、INT、SMALLINT、TINYINT類型。
傳回值說明
返回STRING類型。返回規則如下:
number非BIGINT、INT、SMALLINT、TINYINT類型時,返回報錯。
number值為0時,返回0。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回0。 select bin(0); --返回NULL。 select bin(null); --返回1100。 select bin(12);
表資料樣本
基於樣本資料,擷取int_data和bigint_data兩列的二進位表示形式,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select bin(int_data) as int_new, bin(bigint_data) as bigint_new from mf_math_fun_t;
返回結果如下。
+----------------------------------------------------------------------------+------------------------------------------------------------------+ | int_new | bigint_new | +----------------------------------------------------------------------------+------------------------------------------------------------------+ | NULL | 1111111111111111111111111111111111111111111111111111111111110110 | | 1111111111111111111111111111111111111111111111111111111111101100 | NULL | | 0 | 1111111111111111111111111111111111111111111111111111111111111111 | | 1111111111111111111111111111111111111111111111111111111111011000 | 100 | | 101 | 1111111111111111111111111111111111111111111111111111111111001110 | | 1111111111111111111111111111111111111111111111111111111111000100 | 110 | | 1111111111111111111111111111111111111111111111111111111111111111 | 1111111111111111111111111111111111111111111111111111111110111010 | | 1111111111111111111111111111111111111111111111111111111110110000 | 1 | | 1001 | 1111111111111111111111111111111111111111111111111111111110100110 | | 1111111111111111111111111111111111111111111111111111111110011100 | 1010 | +----------------------------------------------------------------------------+------------------------------------------------------------------+
CBRT
命令格式
double cbrt(<number>)
命令說明
計算number的立方根。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。BIGINT、INT、SMALLINT、TINYINT、DOUBLE、FLOAT、STRING類型資料。
傳回值說明
返回DOUBLE類型。返回規則如下:
number非BIGINT、INT、SMALLINT、TINYINT、DOUBLE、FLOAT、STRING類型時,返回報錯。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回2.0。 select cbrt(8); --返回NULL。 select cbrt(null);
表資料樣本
基於樣本資料,擷取除decimal_data之外其他列的立方根,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select cbrt(int_data) as int_new, cbrt(bigint_data) as bigint_new, cbrt(double_data) as double_new, cbrt(float_data) as float_new, cbrt(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+---------------------+---------------------+----------------------+---------------------+---------------------+ | int_new | bigint_new | double_new | float_new | string_new | +---------------------+---------------------+----------------------+---------------------+---------------------+ | NULL | -2.1544346900318834 | 0.806714323012272 | 0.8067143108004823 | 2.1544346900318834 | | -2.7144176165949063 | NULL | -0.46415888336127786 | -0.46415888566678 | -2.1544346900318834 | | 0.0 | -1.0 | NULL | -1.0 | 3.107232505953859 | | -3.4199518933533937 | 1.5874010519681996 | 0.9619001716077046 | 0.961900166454112 | -3.107232505953859 | | 1.7099759466766968 | -3.6840314986403864 | -1.0 | NULL | 3.6840314986403864 | | -3.9148676411688634 | 1.8171205928321394 | 1.1447142425533317 | 1.1447142425533317 | -3.6840314986403864 | | -1.0 | -4.121285299808557 | -1.9574338205844317 | -1.9574338205844317 | NULL | | -4.308869380063767 | 1.0 | -2.168702885250197 | -2.1687028717323127 | -1.0 | | 2.080083823051904 | -4.481404746557165 | 1.3715339700741747 | 1.3715339565548288 | 0.0 | | -4.641588833612778 | 2.1544346900318834 | -1.7967017791430528 | -1.7967017988380907 | -4.481404746557165 | +---------------------+---------------------+----------------------+---------------------+---------------------+
CEIL
命令格式
bigint ceil(<value>)
命令說明
向上取整,返回不小於輸入值value的最小整數。
參數說明
value:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回BIGINT類型。number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回2。 select ceil(1.1); --返回-1。 select ceil(-1.1); --返回NULL。 select ceil(null);
表資料樣本
基於樣本資料,向上取整,命令樣本如下。
select ceil(bigint_data) as bigint_new, ceil(double_data) as double_new, ceil(decimal_data) as decimal_new, ceil(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10 | 1 | 1 | 10 | | NULL | 0 | 0 | -10 | | -1 | NULL | 21 | 30 | | 4 | 1 | NULL | -30 | | -50 | -1 | -1 | 50 | | 6 | 2 | 2 | -50 | | -70 | -7 | -7 | NULL | | 1 | -10 | -10 | -1 | | -90 | 3 | 3 | 0 | | 10 | -5 | -5 | -90 | +------------+------------+-------------+------------+
CONV
命令格式
string conv(<input>, bigint <from_base>, bigint <to_base>)
命令說明
該函數為進位轉換函式。
參數說明
input:必填。以STRING表示的要轉換的整數值,支援BIGINT和DOUBLE的隱式轉換。
from_base、to_base:必填。以十進位表示的進位值,支援的值為2、8、10和16。支援STRING及DOUBLE類型的隱式轉換。
傳回值說明
返回STRING類型。返回規則如下:
input、from_base或to_base值為NULL時,返回NULL。
轉換過程以64位精度工作,溢出時返回NULL。
input如果是負值,即以短劃線(-)開頭,返回NULL。如果輸入的是小數,會轉為整數值後進行進位轉換,小數部分會被捨棄。
樣本
待用資料樣本
--返回12。 select conv('1100', 2, 10); --返回C。 select conv('1100', 2, 16); --返回171。 select conv('ab', 16, 10); --返回AB。 select conv('ab', 16, 16); --返回NULL。 select conv('1100', null, 10);
表資料樣本
基於樣本資料,轉換為二進位形式,命令樣本如下。
select conv(bigint_data,10,2) as bigint_new, conv(double_data,10,2) as double_new, conv(decimal_data,10,2) as decimal_new, conv(string_data,10,2) as string_new from mf_math_fun_t;
返回結果如下。
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | NULL | 0 | 0 | 1010 | | NULL | NULL | NULL | NULL | | NULL | NULL | 10100 | 11110 | | 100 | 0 | NULL | NULL | | NULL | NULL | NULL | 110010 | | 110 | 1 | 1 | NULL | | NULL | NULL | NULL | NULL | | 1 | NULL | NULL | NULL | | NULL | 10 | 10 | 0 | | 1010 | NULL | NULL | NULL | +------------+------------+-------------+------------+
CORR
命令格式
double corr(<col1>, <col2>)
命令說明
計算兩列資料的皮爾遜係數(Pearson Correlation Coefficien)。此函數為MaxCompute 2.0擴充函數。
參數說明
col1、col2:必填。待計算皮爾遜係數的表的兩個列名稱。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL類型。col1和col2的資料類型可以不相同。
傳回值說明
返回DOUBLE類型。如果某一輸入列的某一行存在NULL值,該行不參與計算。
樣本
基於樣本資料,計算double_data和float_data兩列的皮爾遜係數,命令樣本如下。
select corr(double_data,float_data) from mf_math_fun_t;
返回結果為1.0。
COS
命令格式
double|decimal cos(<number>)
命令說明
計算number的餘弦函數,輸入為弧度值。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回2.6794896585028633e-8。 select cos(3.1415926/2); --返回-0.9999999999999986。 select cos(3.1415926); --返回NULL。 select cos(null);
表資料樣本
基於樣本資料,計算餘弦值,命令樣本如下。
select cos(bigint_data) as bigint_new, cos(double_data) as double_new, cos(decimal_data) as decimal_new, cos(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+---------------------+--------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+--------------------+----------------------+---------------------+ | -0.8390715290764524 | 0.8653239416229412 | 0.8653239416229412 | -0.8390715290764524 | | NULL | 0.9950041652780258 | 0.9950041652780258 | -0.8390715290764524 | | 0.5403023058681398 | NULL | -0.02964340851507803 | 0.15425144988758405 | | -0.6536436208636119 | 0.6294120265736969 | NULL | 0.15425144988758405 | | 0.9649660284921133 | 0.5403023058681398 | 0.5403023058681398 | 0.9649660284921133 | | 0.960170286650366 | 0.0707372016677029 | 0.0707372016677029 | 0.9649660284921133 | | 0.6333192030862999 | 0.3466353178350258 | 0.3466353178350258 | NULL | | 0.5403023058681398 | -0.7142656520272003| -0.7142656520272003 | 0.5403023058681398 | | -0.4480736161291701 | -0.8464080412157756| -0.8464080412157756 | 1.0 | | -0.8390715290764524 | 0.8855195169413189 | 0.8855195169413189 | -0.4480736161291701 | +---------------------+--------------------+----------------------+---------------------+
COSH
命令格式
double|decimal cosh(<number>)
命令說明
計算number的雙曲餘弦函數。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回2.5091784169949913。 select cosh(3.1415926/2); --返回NULL。 select cosh(null);
表資料樣本
基於樣本資料,計算雙曲餘弦值,命令樣本如下。
select cosh(bigint_data) as bigint_new, cosh(double_data) as double_new, cosh(decimal_data) as decimal_new, cosh(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+-----------------------+--------------------+--------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +-----------------------+--------------------+--------------------+----------------------+ | 11013.232920103324 | 1.1410071063729532 | 1.1410071063729532 | 11013.232920103324 | | NULL | 1.0050041680558035 | 1.0050041680558035 | 11013.232920103324 | | 1.5430806348152437 | NULL | 380445243.96844625 | 5343237290762.231 | | 27.308232836016487 | 1.42289270202111 | NULL | 5343237290762.231 | | 2.592352764293536e21 | 1.5430806348152437 | 1.5430806348152437 | 2.592352764293536e21 | | 201.7156361224559 | 2.352409615243247 | 2.352409615243247 | 2.592352764293536e21 | | 1.2577193354595834e30 | 904.0214837702166 | 904.0214837702166 | NULL | | 1.5430806348152437 | 13451.593055733929 | 13451.593055733929 | 1.5430806348152437 | | 6.102016471589204e38 | 6.636456081840602 | 6.636456081840602 | 1.0 | | 11013.232920103324 | 165.151293732197 | 165.151293732197 | 6.102016471589204e38 | +-----------------------+--------------------+--------------------+----------------------+
COT
命令格式
double|decimal cot(<number>)
命令說明
計算number的餘切函數,輸入為弧度值。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回2.6794896585028643E-8。 select cot(3.1415926/2); --返回NULL。 select cot(null);
表資料樣本
基於樣本資料,計算餘切值,命令樣本如下。
selectcot(bigint_data)asbigint_new,cot(double_data)asdouble_new,cot(decimal_data)asdecimal_new,cot(string_data)asstring_newfrommf_math_fun_t;
返回結果如下。
+-----------------------+--------------------+--------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +-----------------------+--------------------+--------------------+----------------------+ | -1.54235104535692 | 1.7264594764178474 | 1.7264594764178474 | 1.54235104535692 | | NULL | -9.966644423259238 | -9.966644423259238 | -1.54235104535692 | | -0.6420926159343308 | NULL | -0.02965644140592836| -0.15611995216165922| | 0.8636911544506167 | 0.8099792954471944 | NULL | 0.15611995216165922 | | 3.6778144508505695 | -0.6420926159343308| -0.6420926159343308| -3.6778144508505695 | | -3.436353004180128 | 0.07091484430265245| 0.07091484430265245| 3.6778144508505695 | | -0.8183574478651038 | -0.36954725630901636| -0.36954725630901636| NULL | | 0.6420926159343308 | -1.0205622016180353 | -1.0205622016180353 | -0.6420926159343308| | 0.5012027833801532 | -1.5893944776331337 | -1.5893944776331337 | 1.0 | | 1.54235104535692 | 1.9059736612916494 | 1.9059736612916494 | 0.5012027833801532 | +-----------------------+---------------------+---------------------+--------------------+
DEGREES
命令格式
double degrees(<number>)
命令說明
將弧度轉換為角度。
參數說明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING類型。此函數為MaxCompute 2.0擴充函數。
傳回值說明
返回DOUBLE類型。number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回90.0。 select degrees(1.5707963267948966); --返回0.0。 select degrees(0); --返回NULL。 select degrees(null);
表資料樣本
基於樣本資料,擷取所有列對應的角度,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select degrees(int_data) as int_new, degrees(bigint_data) as bigint_new, degrees(double_data) as double_new, degrees(decimal_data) as decimal_new, degrees(float_data) as float_new, degrees(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+ | NULL | -572.9577951308232 | 30.08028424436822 | 30.08028424436822 | 30.080282878330387 | 572.9577951308232 | | -1145.9155902616465 | NULL | -5.729577951308232 | -5.729577951308232 | -5.729578036685597 | -572.9577951308232 | | 0.0 | -57.29577951308232 | NULL | 1171.6986910425335 | -57.29577951308232 | 1718.8733853924698 | | -2291.831180523293 | 229.1831180523293 | 50.99324376664326 | NULL | 50.99324294702057 | -1718.8733853924698 | | 286.4788975654116 | -2864.7889756541163 | -57.29577951308232 | -57.29577951308232 | NULL | 2864.7889756541163 | | -3437.7467707849396 | 343.77467707849394 | 85.94366926962348 | 85.94366926962348 | 85.94366926962348 | -2864.7889756541163 | | -57.29577951308232 | -4010.7045659157625 | -429.71834634811745 | -429.71834634811745 | -429.71834634811745 | NULL | | -4583.662361046586 | 57.29577951308232 | -584.4169510334397 | -584.4169510334397 | -584.416940105137 | -57.29577951308232 | | 515.662015617741 | -5156.620156177409 | 147.8231111437524 | 147.8231111437524 | 147.82310677243132 | 0.0 | | -5729.5779513082325 | 572.9577951308232 | -332.31552117587745 | -332.31552117587745 | -332.31553210418014 | -5156.620156177409 | +---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
E
命令格式
double e()
命令說明
返回
e
的值。此函數為MaxCompute 2.0擴充函數。傳回值說明
返回DOUBLE類型。
樣本
--返回2.718281828459045。 select e();
EXP
命令格式
double|decimal exp(<number>)
命令說明
計算number的指數函數。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回4.810477252069109。 select exp(3.1415926/2); --返回NULL。 select exp(null);
表資料樣本
基於樣本資料,計算指數值,命令樣本如下。
select exp(bigint_data) as bigint_new, exp(double_data) as double_new, exp(decimal_data) as decimal_new, exp(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+-------------------------+-------------------------+-------------------------+-------------------------+ | bigint_new | double_new | decimal_new | string_new | +-------------------------+-------------------------+-------------------------+-------------------------+ | 0.000045399929762484854 | 1.6904588483790914 | 1.6904588483790914 | 22026.465794806718 | | NULL | 0.9048374180359595 | 0.9048374180359595 | 0.000045399929762484854 | | 0.36787944117144233 | NULL | 760890487.9368925 | 10686474581524.463 | | 54.598150033144236 | 2.4351296512898744 | NULL | 9.357622968840175e-14 | | 1.9287498479639178e-22 | 0.36787944117144233 | 0.36787944117144233 | 5.184705528587072e21 | | 403.4287934927351 | 4.4816890703380645 | 4.4816890703380645 | 1.9287498479639178e-22 | | 3.975449735908647e-31 | 0.0005530843701478336 | 0.0005530843701478336 | NULL | | 2.718281828459045 | 0.000037170318684126734 | 0.000037170318684126734 | 0.36787944117144233 | | 8.194012623990515e-40 | 13.197138159658358 | 13.197138159658358 | 1.0 | | 22026.465794806718 | 0.0030275547453758153 | 0.0030275547453758153 | 8.194012623990515e-40 | +-------------------------+-------------------------+-------------------------+-------------------------+
FACTORIAL
命令格式
bigint factorial(<number>)
命令說明
返回number的階乘。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。BIGINT、INT、SMALLINT、TINYINT類型,且在[0,20]之間。
傳回值說明
返回BIGINT類型。返回規則如下:
number值為0時,返回1。
number值為NULL或[0,20]之外的值,返回NULL。
樣本
待用資料樣本
--返回120。5!=5*4*3*2*1=120 select factorial(5); --返回1。 select factorial(0); --返回NULL。 select factorial(null);
表資料樣本
基於樣本資料,計算int_data和bigint_data兩列的階乘,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select factorial(int_data) as int_new, factorial(bigint_data) as bigint_new from mf_math_fun_t;
返回結果如下。
+------------+------------+ | int_new | bigint_new | +------------+------------+ | NULL | NULL | | NULL | NULL | | 1 | NULL | | NULL | 24 | | 120 | NULL | | NULL | 720 | | NULL | NULL | | NULL | 1 | | 362880 | NULL | | NULL | 3628800 | +------------+------------+
FILTER
命令格式
array<T> filter(array<T> <a>, function<T,boolean> <func>)
參數說明
a:必填。ARRAY數組。
array<T>
中的T
指代ARRAY數組元素的資料類型,數組中的元素可以為任意類型。func:必填。用於對a中元素進行過濾的函數(內建函數或自訂函數)或運算式,其輸入參數類型必須與a中元素的資料類型一致,其輸出結果資料類型為BOOLEAN。
傳回值說明
返回ARRAY類型。
樣本
--返回[2, 3]。 select filter(array(1, 2, 3), x -> x > 1);
說明關於Lambda函數
->
的介紹,詳情請參見Lambda函數。
FLOOR
命令格式
bigint floor(<number>)
命令說明
向下取整,返回不大於number的最大整數值。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回BIGINT類型。number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回1。 select floor(1.2); --返回0。 select floor(0.1); --返回-2。 select floor(-1.2); --返回-1。 select floor(-0.1); --返回0。 select floor(0.0); --返回0。 select floor(-0.0); --返回NULL。 select floor(null);
表資料樣本
基於樣本資料,向下取整,命令樣本如下。
select floor(bigint_data) as bigint_new, floor(double_data) as double_new, floor(decimal_data) as decimal_new, floor(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10 | 0 | 0 | 10 | | NULL | -1 | -1 | -10 | | -1 | NULL | 20 | 30 | | 4 | 0 | NULL | -30 | | -50 | -1 | -1 | 50 | | 6 | 1 | 1 | -50 | | -70 | -8 | -8 | NULL | | 1 | -11 | -11 | -1 | | -90 | 2 | 2 | 0 | | 10 | -6 | -6 | -90 | +------------+------------+-------------+------------+
FORMAT_NUMBER
命令格式
string format_number(float|double|decimal <expr1>, <expr2>)
命令說明
將數字轉化為指定格式的字串。此函數為MaxCompute 2.0擴充函數。
參數說明
expr1:必填。需要格式化的資料。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING類型。
expr2:必填。需要轉化的目標格式。指定需要保留小數位元。也可以為類似
#,###,###.##
格式描述。
傳回值說明
返回STRING類型資料。返回規則如下:
如果expr2>0,則四捨五入到小數點後指定位元。
如果expr2=0,則沒有小數點或小數部分。
如果expr2<0,或者expr2>340,則返回報錯。
expr1或expr2值為NULL時,返回NULL。
樣本
待用資料樣本
--返回5.230。 select format_number(5.230134523424545456,3); --返回12,332.123。 select format_number(12332.123456, '#,###,###,###.###'); --返回NULL。 select format_number(null,3);
表資料樣本
基於樣本資料,將所有列保留指定小數位元,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select format_number(int_data, 1) as int_new, format_number(bigint_data, 1) as bigint_new, format_number(double_data, 2) as double_new, format_number(decimal_data, 1) as decimal_new, format_number(float_data, 0) as float_new, format_number(string_data, 1) as string_new from mf_math_fun_t;
返回結果如下。
+---------+------------+------------+-------------+-----------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +---------+------------+------------+-------------+-----------+------------+ | NULL | -10.0 | 0.53 | 0.5 | 1 | 10.0 | | -20.0 | NULL | -0.10 | -0.1 | -0 | -10.0 | | 0.0 | -1.0 | NULL | 20.5 | -1 | 30.0 | | -40.0 | 4.0 | 0.89 | NULL | 1 | -30.0 | | 5.0 | -50.0 | -1.00 | -1.0 | NULL | 50.0 | | -60.0 | 6.0 | 1.50 | 1.5 | 2 | -50.0 | | -1.0 | -70.0 | -7.50 | -7.5 | -8 | NULL | | -80.0 | 1.0 | -10.20 | -10.2 | -10 | -1.0 | | 9.0 | -90.0 | 2.58 | 2.6 | 3 | 0.0 | | -100.0 | 10.0 | -5.80 | -5.8 | -6 | -90.0 | +---------+------------+------------+-------------+-----------+------------+
HEX
命令格式
string hex(<number>)
命令說明
將數值或字串轉換為十六進位格式。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING類型。
傳回值說明
返回STRING類型。返回規則如下:
number值非0或非NULL時,返回STRING類型。
number值為0時,返回0。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回0。 select hex(0); --返回616263。 select hex('abc'); --返回11。 select hex(17); --返回3137。 select hex('17'); --返回報錯。 select hex(null);
表資料樣本
基於樣本資料,將所有列轉換為十六進位表示形式,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select hex(int_data) as int_new, hex(bigint_data) as bigint_new, hex(double_data) as double_new, hex(decimal_data) as decimal_new, hex(float_data) as float_new, hex(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+------------------+------------------+------------+-------------+------------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +------------------+------------------+------------+-------------+------------+------------+ | NULL | FFFFFFFFFFFFFFF6 | 302E353235 | 302E353235 | 302E353235 | 3130 | | FFFFFFFFFFFFFFEC | NULL | 2D302E31 | 2D302E31 | 2D302E31 | 2D3130 | | 0 | FFFFFFFFFFFFFFFF | NULL | 32302E3435 | 2D31 | 3330 | | FFFFFFFFFFFFFFD8 | 4 | 302E3839 | NULL | 302E3839 | 2D3330 | | 5 | FFFFFFFFFFFFFFCE | 2D312E30 | 2D31 | NULL | 3530 | | FFFFFFFFFFFFFFC4 | 6 | 312E35 | 312E35 | 312E35 | 2D3530 | | FFFFFFFFFFFFFFFF | FFFFFFFFFFFFFFBA | 2D372E35 | 2D372E35 | 2D372E35 | NULL | | FFFFFFFFFFFFFFB0 | 1 | 2D31302E32 | 2D31302E32 | 2D31302E32 | 2D31 | | 9 | FFFFFFFFFFFFFFA6 | 322E3538 | 322E3538 | 322E3538 | 30 | | FFFFFFFFFFFFFF9C | A | 2D352E38 | 2D352E38 | 2D352E38 | 2D3930 | +------------------+------------------+------------+-------------+------------+------------+
ISNAN
命令格式
boolean isnan(<expr>)
命令說明
判斷expr的值是否為NaN。
參數說明
expr:必填。DOUBLE類型。輸入為STRING、BIGINT、DECIMAL類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
如果expr的值為NaN,返回True,否則返回False。
expr的值為NULL時,返回False。
樣本
--返回False。 SELECT isnan(100.1);
LN
命令格式
double|decimal ln(<number>)
命令說明
計算number的自然對數。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為負數或0時,返回NULL。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回1.144729868791239。 select ln(3.1415926); --返回NULL。 select ln(null);
表資料樣本
基於樣本資料,計算自然對數值,命令樣本如下。
select ln(bigint_data) as bigint_new, ln(double_data) as double_new, ln(decimal_data) as decimal_new, ln(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+--------------------+----------------------+---------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+----------------------+---------------------+---------------------+ | NULL | -0.6443570163905132 | -0.6443570163905132 | 2.302585092994046 | | NULL | NULL | NULL | NULL | | NULL | NULL | 3.017982882488811 | 3.4011973816621555 | | 1.3862943611198906 | -0.11653381625595151 | NULL | NULL | | NULL | NULL | NULL | 3.912023005428146 | | 1.791759469228055 | 0.4054651081081644 | 0.4054651081081644 | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | NULL | | NULL | 0.9477893989335261 | 0.9477893989335261 | NULL | | 2.302585092994046 | NULL | NULL | NULL | +--------------------+----------------------+---------------------+---------------------+
LOG
命令格式
double log(<base>, <x>)
命令說明
計算以base為底的x的對數。
參數說明
base:必填。底數。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
x:必填。待計算對數的值。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE類型。 返回規則如下:
base或x為NULL時,返回NULL。
base或x為負數或0時,返回NULL。
如果base為1(會引發一個除零行為),會返回NULL。
樣本
待用資料樣本
--返回4.0。 select log(2, 16); --返回NULL。 select log(2, null);
表資料樣本
基於樣本資料,計算資料行以2為底的對數值,命令樣本如下。
select log(2,bigint_data) as bigint_new, log(2,double_data) as double_new, log(2,decimal_data) as decimal_new, log(2,string_data) as string_new from mf_math_fun_t;
返回結果如下。
+--------------------+----------------------+--------------------+--------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+----------------------+--------------------+--------------------+ | NULL | -0.929610672108602 | -0.929610672108602 | 3.3219280948873626 | | NULL | NULL | NULL | NULL | | NULL | NULL | 4.354028938054387 | 4.906890595608519 | | 2.0 | -0.16812275880832692 | NULL | NULL | | NULL | NULL | NULL | 5.643856189774724 | | 2.584962500721156 | 0.5849625007211562 | 0.5849625007211562 | NULL | | NULL | NULL | NULL | NULL | | 0.0 | NULL | NULL | NULL | | NULL | 1.3673710656485296 | 1.3673710656485296 | NULL | | 3.3219280948873626 | NULL | NULL | NULL | +--------------------+----------------------+--------------------+--------------------+
LOG10
命令格式
double log10(<number>)
命令說明
返回以10為底,number的對數。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING類型。
傳回值說明
返回DOUBLE類型。number值為0、負數或NULL時,返回NULL。
樣本
待用資料樣本
--返回NULL。 select log10(null); --返回NULL。 select log10(0); --返回0.9030899869919435。 select log10(8);
表資料樣本
基於樣本資料,計算所有列以10為底的對數,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select log10(int_data) as int_new, log10(bigint_data) as bigint_new, log10(double_data) as double_new, log10(decimal_data) as decimal_new, log10(float_data) as float_new, log10(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+ | NULL | NULL | -0.2798406965940431 | -0.2798406965940431 | -0.27984071631668606 | 1.0 | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | 1.3106933123433606 | NULL | 1.4771212547196624 | | NULL | 0.6020599913279623 | -0.0506099933550872 | NULL | -0.050610000335573106 | NULL | | 0.6989700043360187 | NULL | NULL | NULL | NULL | 1.6989700043360185 | | NULL | 0.7781512503836435 | 0.17609125905568124 | 0.17609125905568124 | 0.17609125905568124 | NULL | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | 0.0 | NULL | NULL | NULL | NULL | | 0.9542425094393249 | NULL | 0.4116197059632301 | 0.4116197059632301 | 0.411619693120579 | NULL | | NULL | 1.0 | NULL | NULL | NULL | NULL | +--------------------+--------------------+---------------------+---------------------+-----------------------+--------------------+
LOG2
命令格式
double log2(<number>)
命令說明
返回以2為底,number的對數。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING類型。
傳回值說明
返回DOUBLE類型。number值為0、負數或NULL時,返回NULL。
樣本
待用資料樣本
--返回NULL。 select log2(null); --返回NULL。 select log2(0); --返回3.0。 select log2(8);
表資料樣本
基於樣本資料,計算所有列以2為底的對數,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select log2(int_data) as int_new, log2(bigint_data) as bigint_new, log2(double_data) as double_new, log2(decimal_data) as decimal_new, log2(float_data) as float_new, log2(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+ | NULL | NULL | -0.929610672108602 | -0.929610672108602 | -0.9296107376258038 | 3.3219280948873626 | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | NULL | NULL | 4.354028938054387 | NULL | 4.906890595608519 | | NULL | 2.0 | -0.16812275880832692 | NULL | -0.16812278199699915 | NULL | | 2.321928094887362 | NULL | NULL | NULL | NULL | 5.643856189774724 | | NULL | 2.584962500721156 | 0.5849625007211562 | 0.5849625007211562 | 0.5849625007211562 | NULL | | NULL | NULL | NULL | NULL | NULL | NULL | | NULL | 0.0 | NULL | NULL | NULL | NULL | | 3.1699250014423126 | NULL | 1.3673710656485296 | 1.3673710656485296 | 1.367371022986166 | NULL | | NULL | 3.3219280948873626 | NULL | NULL | NULL | NULL | +--------------------+--------------------+----------------------+--------------------+----------------------+--------------------+
NEGATIVE
命令格式
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL negative(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
命令說明
返回expr的負值。
參數說明
expr:必填。輸入運算式,支援TINYINT、SMALLINT、INT、BIGINT、DOUBLE、DECIMAL類型。
傳回值說明
返回expr運算式的負值。
樣本
--返回-1。 SELECT negative(1);
PI
命令格式
double pi()
命令說明
返回π的值。此函數為MaxCompute 2.0擴充函數。
傳回值說明
返回DOUBLE類型。
樣本
--返回3.141592653589793。 select pi();
POSITIVE
命令格式
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL positive(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
命令說明
返回expr的值。
參數說明
expr:必填。輸入運算式,支援TINYINT、SMALLINT、INT、BIGINT、DOUBLE、DECIMAL類型。
傳回值說明
返回expr運算式的值。
樣本
--返回1。 SELECT positive(1);
POW
命令格式
double|decimal pow(<x>, <y>)
命令說明
計算x的y次方,即
x^y
。參數說明
x:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
y:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
x或y為DOUBLE、DECIMAL類型時會返回相應的類型。
x或y為STRING、BIGINT類型時,返回DOUBLE類型。
x或y值為NULL時,返回NULL。
樣本
待用資料樣本
--返回65536.0。 select pow(2, 16); --返回NULL。 select pow(2, null);
表資料樣本
基於樣本資料,計算資料行的2次方,命令樣本如下。
select pow(bigint_data, 2) as bigint_new, pow(double_data, 2) as double_new, pow(decimal_data, 2) as decimal_new, pow(string_data, 2) as string_new from mf_math_fun_t;
返回結果如下。
+------------+----------------------+----------------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+----------------------+----------------------+------------+ | 100.0 | 0.275625 | 0.275625 | 100.0 | | NULL | 0.010000000000000002 | 0.010000000000000002 | 100.0 | | 1.0 | NULL | 418.2025 | 900.0 | | 16.0 | 0.7921 | NULL | 900.0 | | 2500.0 | 1.0 | 1.0 | 2500.0 | | 36.0 | 2.25 | 2.25 | 2500.0 | | 4900.0 | 56.25 | 56.25 | NULL | | 1.0 | 104.03999999999999 | 104.03999999999999 | 1.0 | | 8100.0 | 6.6564000000000005 | 6.6564000000000005 | 0.0 | | 100.0 | 33.64 | 33.64 | 8100.0 | +------------+----------------------+----------------------+------------+
RADIANS
命令格式
double radians(<number>)
命令說明
將角度轉換為弧度。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING類型。
傳回值說明
返回DOUBLE類型。number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回1.5707963267948966。 select radians(90); --返回0.0。 select radians(0); --返回NULL。 select radians(null);
表資料樣本
基於樣本資料,計算所有列轉換為弧度,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select radians(int_data) as int_new, radians(bigint_data) as bigint_new, radians(double_data) as double_new, radians(decimal_data) as decimal_new, radians(float_data) as float_new, radians(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+ | NULL | -0.17453292519943295 | 0.00916297857297023 | 0.00916297857297023 | 0.009162978156851308 | 0.17453292519943295 | | -0.3490658503988659 | NULL | -0.0017453292519943296 | -0.0017453292519943296 | -0.0017453292780017621 | -0.17453292519943295 | | 0.0 | -0.017453292519943295 | NULL | 0.3569198320328404 | -0.017453292519943295 | 0.5235987755982988 | | -0.6981317007977318 | 0.06981317007977318 | 0.015533430342749534 | NULL | 0.015533430093078181 | -0.5235987755982988 | | 0.08726646259971647 | -0.8726646259971648 | -0.017453292519943295 | -0.017453292519943295 | NULL | 0.8726646259971648 | | -1.0471975511965976 | 0.10471975511965977 | 0.02617993877991494 | 0.02617993877991494 | 0.02617993877991494 | -0.8726646259971648 | | -0.017453292519943295 | -1.2217304763960306 | -0.1308996938995747 | -0.1308996938995747 | -0.1308996938995747 | NULL | | -1.3962634015954636 | 0.017453292519943295 | -0.17802358370342158 | -0.17802358370342158 | -0.17802358037447025 | -0.017453292519943295 | | 0.15707963267948966 | -1.5707963267948966 | 0.045029494701453704 | 0.045029494701453704 | 0.04502949336987316 | 0.0 | | -1.7453292519943295 | 0.17453292519943295 | -0.10122909661567112 | -0.10122909661567112 | -0.10122909994462247 | -1.5707963267948966 | +-----------------------+-----------------------+------------------------+------------------------+------------------------+-----------------------+
RAND
命令格式
double rand(bigint <seed>)
命令說明
返回DOUBLE類型的隨機數,傳回值區間是0~1。
參數說明
seed:可選。BIGINT類型。隨機數種子,決定隨機數序列的起始值。
說明您可以通過seed確定隨機數序列,seed確定後,即可固定該函數的返回結果。執行環境是一樣的情況下,seed取值不變的話,傳回值是一樣的,如果需要返回不一樣的結果,需要修改seed取值。
可在SQL前新增以下參數,預設值為
false
。set odps.sql.executionengine.enable.rand.time.seed=true|false;
當參數值為
false
時,RAND函數使用當前InstanceId作為隨機數初始化seed,可以保證函數等冪。當參數值為
true
時,RAND函數使用當前系統時間作為隨機數初始化的seed, 但RAND函數不再等冪,不能作為Shuffle Key使用,會導致重跑的結果不相同。
傳回值說明
返回DOUBLE類型。
樣本
--返回4.7147460303803655E-4。 select rand(); --返回0.7308781907032909。 select rand(1);
ROUND
命令格式
double|decimal round(<number>[, bigint <decimal_places>])
命令說明
四捨五入到指定小數點位置。
參數說明
number:必填。DOUBLE類型或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
decimal_places:可選。BIGINT類型常量,四捨五入計算到小數點後的位置。如果省略表示四捨五入到個位元,預設值為0。
說明decimal_places可以是負數。負數會從小數點向左開始計數,並且不保留小數部分。如果decimal_places超過了整數部分長度,返回0。
傳回值說明
返回DOUBLE類型或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
decimal_places非BIGINT類型時,返回報錯。
number或decimal_places值為NULL時,返回NULL。
樣本
待用資料樣本
--返回125.0。 select round(125.315); --返回125.3。 select round(125.315, 1); --返回125.32。 select round(125.315, 2); --返回125.315。 select round(125.315, 3); --返回-125.32。 select round(-125.315, 2); --返回100.0。 select round(123.345, -2); --返回NULL。 select round(null); --返回123.345。 select round(123.345, 4); --返回0.0。 select round(123.345, -4);
表資料樣本
基於樣本資料,對列四捨五入到小數點指定位置,命令樣本如下。
select round(bigint_data, 1) as bigint_new, round(double_data, 2) as double_new, round(decimal_data, 1) as decimal_new, round(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+------------+------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+------------+-------------+------------+ | -10.0 | 0.53 | 0.5 | 10.0 | | NULL | -0.1 | -0.1 | -10.0 | | -1.0 | NULL | 20.5 | 30.0 | | 4.0 | 0.89 | NULL | -30.0 | | -50.0 | -1.0 | -1 | 50.0 | | 6.0 | 1.5 | 1.5 | -50.0 | | -70.0 | -7.5 | -7.5 | NULL | | 1.0 | -10.2 | -10.2 | -1.0 | | -90.0 | 2.58 | 2.6 | 0.0 | | 10.0 | -5.8 | -5.8 | -90.0 | +------------+------------+-------------+------------+
SHIFTLEFT
命令格式
int shiftleft(tinyint|smallint|int <number1>, int <number2>) bigint shiftleft(bigint <number1>, int <number2>)
命令說明
按位左移(<<)。此函數為MaxCompute 2.0擴充函數。
參數說明
number1:必填。TINYINT、SMALLINT、INT或BIGINT類型。
number2:必填。INT類型。
傳回值說明
返回INT或BIGINT類型。返回規則如下
number1非TINYINT、SMALLINT、INT或BIGINT類型時,返回報錯。
number2非INT類型時,返回報錯。
number1或number2值為NULL時,返回NULL。
樣本
待用資料樣本
--返回4。1的二進位左移2位(1<<2,0001左移兩位是0100)。 select shiftleft(1,2); --返回32。4的二進位左移3位(4<<3,0100左移3位是100000)。 select shiftleft(4,3); --返回NULL。 select shiftleft(null,2);
表資料樣本
基於樣本資料,將int_data和bigint_data列按位左移,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select shiftleft(int_data, 1) as int_new, shiftleft(bigint_data, 1) as bigint_new from mf_math_fun_t;
返回結果如下。
+---------+------------+ | int_new | bigint_new | +---------+------------+ | NULL | -20 | | -40 | NULL | | 0 | -2 | | -80 | 8 | | 10 | -100 | | -120 | 12 | | -2 | -140 | | -160 | 2 | | 18 | -180 | | -200 | 20 | +---------+------------+
SHIFTRIGHT
命令格式
int shiftright(tinyint|smallint|int <number1>, int <number2>) bigint shiftright(bigint <number1>, int <number2>)
命令說明
按位右移(>>)。此函數為MaxCompute 2.0擴充函數。
參數說明
number1:必填。TINYINT、SMALLINT、INT或BIGINT類型。
number2:必填。INT類型。
傳回值說明
返回INT或BIGINT類型。返回規則如下:
number1非TINYINT、SMALLINT、INT或BIGINT類型時,返回報錯。
number2非INT類型時,返回報錯。
number1或number2值為NULL時,返回NULL。
樣本
待用資料樣本
--返回1。4的二進位右移2位(4>>2,0100右移兩位是0001)。 select shiftright(4,2); --返回4。32的二進位右移3位(32>>3,100000右移3位是0100)。 select shiftright(32,3); --返回NULL。 select shiftright(null,3);
表資料樣本
基於樣本資料,將int_data和bigint_data列按位右移,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select shiftright(int_data, 1) as int_new, shiftright(bigint_data, 1) as bigint_new from mf_math_fun_t;
返回結果如下。
+---------+------------+ | int_new | bigint_new | +---------+------------+ | NULL | -5 | | -10 | NULL | | 0 | -1 | | -20 | 2 | | 2 | -25 | | -30 | 3 | | -1 | -35 | | -40 | 0 | | 4 | -45 | | -50 | 5 | +---------+------------+
SHIFTRIGHTUNSIGNED
命令格式
int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>) bigint shiftrightunsigned(bigint <number1>, int <number2>)
命令說明
無符號按位右移(>>>)。此函數為MaxCompute 2.0擴充函數。
參數說明
number1:必填。TINYINT、SMALLINT、INT或BIGINT整型資料。
number2:必填。INT整型資料。
傳回值說明
返回INT或BIGINT類型。返回規則如下:
number1非TINYINT、SMALLINT、INT或BIGINT類型時,返回報錯。
number2非INT類型時,返回報錯。
number1或number2值為NULL時,返回NULL。
樣本
待用資料樣本
--返回2。8的二進位無符號右移2位(8>>>2,1000右移兩位是0010)。 select shiftrightunsigned(8,2); --返回1073741820。-14的二進位右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是00111111 11111111 11111111 11111100)。 select shiftrightunsigned(-14,2); --返回NULL。 select shiftrightunsigned(-14,null);
表資料樣本
基於樣本資料,返回int_data和bigint_data列的無符號按位右移值,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select shiftrightunsigned(int_data, 1) as int_new, shiftrightunsigned(bigint_data, 1) as bigint_new from mf_math_fun_t;
返回結果如下。
+------------+---------------------+ | int_new | bigint_new | +------------+---------------------+ | NULL | 9223372036854775803 | | 2147483638 | NULL | | 0 | 9223372036854775807 | | 2147483628 | 2 | | 2 | 9223372036854775783 | | 2147483618 | 3 | | 2147483647 | 9223372036854775773 | | 2147483608 | 0 | | 4 | 9223372036854775763 | | 2147483598 | 5 | +------------+---------------------+
SIGN
命令格式
double sign(<number>)
命令說明
擷取輸入參數的符號。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING類型。
傳回值說明
返回DOUBLE類型。返回規則如下:
number值為正數時,返回1.0。
number值為負數時,返回-1.0。
number值為0時,返回0.0。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回-1.0。 select sign(-2.5); --返回1.0。 select sign(2.5); --返回0.0。 select sign(0); --返回NULL。 select sign(null);
表資料樣本
基於樣本資料,擷取所有列資料的符號,命令樣本如下。
--開啟2.0新類型。此命令需要與SQL語句一起提交。 set odps.sql.type.system.odps2=true; select sign(int_data) as int_new, sign(bigint_data) as bigint_new, sign(double_data) as double_new, sign(decimal_data) as decimal_new, sign(float_data) as float_new, sign(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+------------+------------+------------+-------------+------------+------------+ | int_new | bigint_new | double_new | decimal_new | float_new | string_new | +------------+------------+------------+-------------+------------+------------+ | NULL | -1.0 | 1.0 | 1 | 1.0 | 1.0 | | -1.0 | NULL | -1.0 | -1 | -1.0 | -1.0 | | 0.0 | -1.0 | NULL | 1 | -1.0 | 1.0 | | -1.0 | 1.0 | 1.0 | NULL | 1.0 | -1.0 | | 1.0 | -1.0 | -1.0 | -1 | NULL | 1.0 | | -1.0 | 1.0 | 1.0 | 1 | 1.0 | -1.0 | | -1.0 | -1.0 | -1.0 | -1 | -1.0 | NULL | | -1.0 | 1.0 | -1.0 | -1 | -1.0 | -1.0 | | 1.0 | -1.0 | 1.0 | 1 | 1.0 | 0.0 | | -1.0 | 1.0 | -1.0 | -1 | -1.0 | -1.0 | +------------+------------+------------+-------------+------------+------------+
SIN
命令格式
double|decimal sin(<number>)
命令說明
計算number的正弦函數,輸入為弧度值。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回-0.3048106211022167。 select sin(60); --返回NULL。 select sin(null);
表資料樣本
基於樣本資料,計算資料行的正弦值,命令樣本如下。
select sin(bigint_data) as bigint_new, sin(double_data) as double_new, sin(decimal_data) as decimal_new, sin(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+----------------------+----------------------+----------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +----------------------+----------------------+----------------------+----------------------+ | 0.5440211108893698 | 0.5012130046737979 | 0.5012130046737979 | -0.5440211108893698 | | NULL | -0.09983341664682815 | -0.09983341664682815 | 0.5440211108893698 | | -0.8414709848078965 | NULL | 0.9995605376022045 | -0.9880316240928618 | | -0.7568024953079282 | 0.7770717475268238 | NULL | 0.9880316240928618 | | 0.26237485370392877 | -0.8414709848078965 | -0.8414709848078965 | -0.26237485370392877 | | -0.27941549819892586 | 0.9974949866040544 | 0.9974949866040544 | 0.26237485370392877 | | -0.7738906815578891 | -0.9379999767747389 | -0.9379999767747389 | NULL | | 0.8414709848078965 | 0.6998746875935423 | 0.6998746875935423 | -0.8414709848078965 | | -0.8939966636005579 | 0.5325349075556212 | 0.5325349075556212 | 0.0 | | -0.5440211108893698 | 0.46460217941375737 | 0.46460217941375737 | -0.8939966636005579 | +----------------------+----------------------+----------------------+----------------------+
SINH
命令格式
double|decimal sinh(<number>)
命令說明
計算number的雙曲正弦函數。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回5.343237290762231E12。 select sinh(30); --返回NULL。 select sinh(null);
表資料樣本
基於樣本資料,計算資料行的雙曲正弦值,命令樣本如下。
select sinh(bigint_data) as bigint_new, sinh(double_data) as double_new, sinh(decimal_data) as decimal_new, sinh(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+------------------------+----------------------+----------------------+-----------------------+ | bigint_new | double_new | decimal_new | string_new | +------------------------+----------------------+----------------------+-----------------------+ | -11013.232874703393 | 0.5494517420061382 | 0.5494517420061382 | 11013.232874703393 | | NULL | -0.10016675001984403 | -0.10016675001984403 | -11013.232874703393 | | -1.1752011936438014 | NULL | 380445243.96844625 | 5343237290762.231 | | 27.28991719712775 | 1.0122369492687646 | NULL | -5343237290762.231 | | -2.592352764293536e21 | -1.1752011936438014 | -1.1752011936438014 | 2.592352764293536e21 | | 201.71315737027922 | 2.1292794550948173 | 2.1292794550948173 | -2.592352764293536e21 | | -1.2577193354595834e30 | -904.0209306858466 | -904.0209306858466 | NULL | | 1.1752011936438014 | -13451.593018563612 | -13451.593018563612 | -1.1752011936438014 | | -6.102016471589204e38 | 6.560682077817757 | 6.560682077817757 | 0.0 | | 11013.232874703393 | -165.1482661774516 | -165.1482661774516 | -6.102016471589204e38 | +------------------------+----------------------+----------------------+-----------------------+
SQRT
命令格式
double|decimal sqrt(<number>)
命令說明
計算number的平方根。
參數說明
number:必填。DOUBLE或DECIMAL類型,必須大於0,小於0時返回NULL。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回2.0。 select sqrt(4); --返回NULL。 select sqrt(null);
表資料樣本
基於樣本資料,計算資料行的平方根,命令樣本如下。
select sqrt(bigint_data) as bigint_new, sqrt(double_data) as double_new, sqrt(decimal_data) as decimal_new, sqrt(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+--------------------+--------------------+-------------------+--------------------+ | bigint_new | double_new | decimal_new | string_new | +--------------------+--------------------+-------------------+--------------------+ | NULL | 0.724568837309472 | 0.724568837309472 | 3.1622776601683795 | | NULL | NULL | NULL | NULL | | NULL | NULL | 4.522167621838006 | 5.477225575051661 | | 2.0 | 0.9433981132056604 | NULL | NULL | | NULL | NULL | NULL | 7.0710678118654755 | | 2.449489742783178 | 1.224744871391589 | 1.224744871391589 | NULL | | NULL | NULL | NULL | NULL | | 1.0 | NULL | NULL | NULL | | NULL | 1.606237840420901 | 1.606237840420901 | 0.0 | | 3.1622776601683795 | NULL | NULL | NULL | +--------------------+--------------------+-------------------+--------------------+
TAN
命令格式
double|decimal tan(<number>)
命令說明
計算number的正切函數,輸入為弧度值。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回-6.405331196646276。 select tan(30); --返回NULL。 select tan(null);
表資料樣本
基於樣本資料,計算資料行的正切值,命令樣本如下。
select tan(bigint_data) as bigint_new, tan(double_data) as double_new, tan(decimal_data) as decimal_new, tan(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+----------------------+----------------------+----------------------+----------------------+ | bigint_new | double_new | decimal_new | string_new | +----------------------+----------------------+----------------------+----------------------+ | -0.6483608274590866 | 0.5792200822893652 | 0.5792200822893652 | 0.6483608274590866 | | NULL | -0.10033467208545055 | -0.10033467208545055 | -0.6483608274590866 | | -1.5574077246549023 | NULL | -33.71948732190433 | -6.405331196646276 | | 1.1578212823495775 | 1.2345994590490046 | NULL | 6.405331196646276 | | 0.27190061199763077 | -1.5574077246549023 | -1.5574077246549023 | -0.27190061199763077 | | -0.29100619138474915 | 14.101419947171719 | 14.101419947171719 | 0.27190061199763077 | | -1.2219599181369434 | -2.706013866772691 | -2.706013866772691 | NULL | | 1.5574077246549023 | -0.979852083895097 | -0.979852083895097 | -1.5574077246549023 | | 1.995200412208242 | -0.6291704256385503 | -0.6291704256385503 | 0.0 | | 0.6483608274590866 | 0.5246662219468002 | 0.5246662219468002 | 1.995200412208242 | +----------------------+----------------------+----------------------+----------------------+
TANH
命令格式
double|decimal tanh(<number>)
命令說明
計算number的雙曲正切函數。
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
number值為NULL時,返回NULL。
樣本
待用資料樣本
--返回1.0。 select tanh(30); --返回NULL。 select tanh(null);
表資料樣本
基於樣本資料,計算資料行的雙曲正切值,命令樣本如下。
select tanh(bigint_data) as bigint_new, tanh(double_data) as double_new, tanh(decimal_data) as decimal_new, tanh(string_data) as string_new from mf_math_fun_t;
返回結果如下。
+---------------------+----------------------+----------------------+---------------------+ | bigint_new | double_new | decimal_new | string_new | +---------------------+----------------------+----------------------+---------------------+ | -0.9999999958776927 | 0.48154979836430806 | 0.48154979836430806 | 0.9999999958776927 | | NULL | -0.09966799462495582 | -0.09966799462495582 | -0.9999999958776927 | | -0.7615941559557649 | NULL | 1.0 | 1.0 | | 0.999329299739067 | 0.7113937318189625 | NULL | -1.0 | | -1.0 | -0.7615941559557649 | -0.7615941559557649 | 1.0 | | 0.9999877116507956 | 0.9051482536448664 | 0.9051482536448664 | -1.0 | | -1.0 | -0.9999993881955461 | -0.9999993881955461 | NULL | | 0.7615941559557649 | -0.9999999972367348 | -0.9999999972367348 | -0.7615941559557649 | | -1.0 | 0.9885821584459533 | 0.9885821584459533 | 0.0 | | 0.9999999958776927 | -0.9999816679925603 | -0.9999816679925603 | -1.0 | +---------------------+----------------------+----------------------+---------------------+
TRUNC
命令格式
double|decimal trunc(<number>[, bigint <decimal_places>])
命令說明
參數說明
number:必填。DOUBLE或DECIMAL類型。輸入為STRING、BIGINT類型時,會隱式轉換為DOUBLE類型後參與運算。
decimal_places:可選。BIGINT類型常量,要截取到的小數點位置。省略此參數時預設截取到個位元。decimal_places可以是負數,負數會從小數點向左開始截取,並且不保留小數部分。如果decimal_places超過了整數部分長度,則返回0。
傳回值說明
返回DOUBLE或DECIMAL類型。返回規則如下:
number為DOUBLE、DECIMAL類型時會返回相應的類型。
number為STRING、BIGINT類型時,返回DOUBLE類型。
decimal_places非BIGINT類型時,返回報錯。
number或decimal_places值為NULL時,返回NULL。
說明返回DOUBLE類型時,返回的結果顯示可能不符合預期,例如
trunc(125.815,1)
,這個DOUBLE類型顯示問題任何系統都存在。截取掉的部分補0。
樣本
待用資料樣本
--返回125.0。 select trunc(125.815,0); --返回125.80000000000001。 select trunc(125.815,1); --返回125.81。 select trunc(125.815,2); --返回125.815。 select trunc(125.815,3); --返回-125.81。 select trunc(-125.815,2); --返回120.0。 select trunc(125.815,-1); --返回100.0。 select trunc(125.815,-2); --返回0.0。 select trunc(125.815,-3); --返回123.345。 select trunc(123.345,4); --返回0.0。 select trunc(123.345,-4); --返回NULL。 select trunc(123.345,null);
表資料樣本
基於樣本資料,將列截取到指定小數點位置,命令樣本如下。
select trunc(bigint_data, 1) as bigint_new, trunc(double_data,1) as double_new, trunc(decimal_data, 1) as decimal_new, trunc(string_data, 1) as string_new from mf_math_fun_t;
返回結果如下。
+------------+---------------------+-------------+------------+ | bigint_new | double_new | decimal_new | string_new | +------------+---------------------+-------------+------------+ | -10.0 | 0.5 | 0.5 | 10.0 | | NULL | -0.1 | -0.1 | -10.0 | | -1.0 | NULL | 20.4 | 30.0 | | 4.0 | 0.8 | NULL | -30.0 | | -50.0 | -1.0 | -1 | 50.0 | | 6.0 | 1.5 | 1.5 | -50.0 | | -70.0 | -7.5 | -7.5 | NULL | | 1.0 | -10.200000000000001 | -10.2 | -1.0 | | -90.0 | 2.5 | 2.5 | 0.0 | | 10.0 | -5.800000000000001 | -5.8 | -90.0 | +------------+---------------------+-------------+------------+
UNHEX
命令格式
binary unhex(string <number>)
命令說明
返回十六進位字串所代表的字串。此函數為MaxCompute 2.0擴充函數。
參數說明
number:必填。為十六進位字串。
傳回值說明
返回BINARY類型。返回規則如下:
number值為0時,返回報錯。
number值為NULL時,返回NULL。
樣本
--返回abc。 select unhex('616263'); --返回abc。 select unhex(616263); --返回NULL。 select unhex(null);
WIDTH_BUCKET
命令格式
width_bucket(numeric <expr>, numeric <min_value>, numeric <max_value>, int <num_buckets>)
命令說明
設定分組範圍的最小值、最大值和分組個數,構建指定個數的大小相同的分組,返回指定欄位值落入的分組編號。支援的資料類型為BIGINT、INT、FLOAT、DOUBLE、DECIMAL以及資料類型2.0的DECIMAL(precision,scale),詳情請參見2.0資料類型版本。此函數為MaxCompute 2.0擴充函數。
參數說明
expr:必填。需要判斷分組編號的欄位。
min_value:必填。分組範圍最小值。
max_value:必填。分組範圍最大值,最大值必須比最小值大。
num_buckets:必填。分組個數,必須大於0。
傳回值說明
傳回值為BIGINT類型,範圍為0到設定的分組個數+1。返回規則如下:
expr值小於min_value時,返回0。
expr大於max_value時,返回設定的分組個數+1。
expr值為NULL時,分組編號傳回值也為NULL。其他情況返回欄位值落入的分組編號。欄位值對應的分組編號取值規則為
floor( num_buckets * (expr - min_value)/(max_value - min_value) + 1)
。min_value、max_value或num_buckets值為NULL時,返回NULL。
樣本
樣本1:入參無NULL。命令樣本如下。
select key,value,width_bucket(value,100,500,5) as value_group from values (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) as t(key,value);
返回結果如下。
+-------+--------+-------------+ | key | value | value_group | +-------+--------+-------------+ | 1 | 99 | 0 | | 2 | 100 | 1 | | 3 | 199 | 2 | | 4 | 200 | 2 | | 5 | 499 | 5 | | 6 | 500 | 6 | | 7 | 501 | 6 | | 8 | NULL | NULL | +-------+--------+-------------+
樣本2:入參存在NULL。命令樣本如下。
select key,value,width_bucket(value,100,500,null) as value_group from values (1,99), (2,100), (3,199), (4,200), (5,499), (6,500), (7,501), (8,NULL) as t(key,value);
返回結果如下。
+------+-------+-------------+ | key | value | value_group | +------+-------+-------------+ | 1 | 99 | NULL | | 2 | 100 | NULL | | 3 | 199 | NULL | | 4 | 200 | NULL | | 5 | 499 | NULL | | 6 | 500 | NULL | | 7 | 501 | NULL | | 8 | NULL | NULL | +------+-------+-------------+