本文介紹數學計算函數的基本文法和樣本。
Log Service支援如下數學計算函數。
支援如下運算子:
+-*/%
其中,使用運算子/時,預設不保留小數部分。您可通過
x*1.0/y
運算,保留小數部分。在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status或"status"表示日誌欄位status。
函數名稱 | 文法 | 說明 | 支援SQL | 支援SPL |
abs(x) | 計算x的絕對值。 | √ | √ | |
acos(x) | 計算x的反餘弦。 | √ | √ | |
asin(x) | 計算x的反正弦。 | √ | √ | |
atan(x) | 計算x的反正切。 | √ | √ | |
atan2(x, y) | 計算x和y相除的結果的反正切。 | √ | √ | |
cbrt(x) | 計算x的立方根。 | √ | √ | |
ceil(x) | 對x進行向上取整數。 ceil函數是ceiling函數的別名。 | √ | √ | |
ceiling(x) | 對x進行向上取整數。 | √ | √ | |
cos(x) | 計算x的餘弦。 | √ | √ | |
cosh(x) | 計算x的雙曲餘弦。 | √ | √ | |
cosine_similarity(x, y) | 計算x和y之間的餘弦相似性。 | √ | × | |
degrees(x) | 將弧度轉換為度。 | √ | √ | |
e() | 返回自然底數e的值。 | √ | √ | |
exp(x) | 計算自然底數e的x次冪。 | √ | × | |
floor(x) | 對x進行向下取整數。 | √ | √ | |
from_base(x, y) | 根據BASE編碼將x轉為y進位的數字。 | √ | √ | |
ln(x) | 計算x的自然對數。 | √ | √ | |
infinity() | 返回正無窮的數值。 | √ | √ | |
is_nan(x) | 判斷x是否為NaN。 | √ | √ | |
log2(x) | 計算x以2為底的對數。 | √ | √ | |
log10(x) | 計算x以10為底的對數。 | √ | √ | |
log(x, y) | 計算x以y為底的對數。 | √ | × | |
mod(x, y) | 計算x與y相除的餘數。 | √ | √ | |
nan() | 返回一個NaN值。 | √ | √ | |
pi() | 返回π值,精確到小數點後15位。 | √ | √ | |
pow(x, y) | 計算x的y次冪。 pow函數是power函數的別名。 | √ | √ | |
power(x, y) | 計算x的y次冪。 | √ | √ | |
radians(x) | 將度轉換為弧度。 | √ | √ | |
rand() | 返回隨機數。 | √ | √ | |
random() | 返回[0,1)之間的隨機數。 | √ | √ | |
random(x) | 返回[0,x)之間的隨機數。 | √ | √ | |
round(x) | 對x進行四捨五入取整數。 | √ | √ | |
round(x, n) | 對x進行四捨五入且保留n位小數。 | √ | √ | |
sign(x) | 返回x的符號,通過1、0、-1表示。 | √ | × | |
sin(x) | 計算x的正弦。 | √ | √ | |
sqrt(x) | 計算x的平方根。 | √ | √ | |
tan(x) | 計算x的正切。 | √ | √ | |
tanh(x) | 計算x的雙曲正切。 | √ | √ | |
to_base(x, y) | 根據BASE編碼將x轉為y進位的字串。 | √ | × | |
truncate(x) | 截斷x的小數部分。 | √ | √ | |
width_bucke(x, bound1, bound2, numBuckets) | 將一段數值範圍劃分成大小相同的多個Bucket,然後返回x所屬的Bucket。 | √ | × | |
width_bucke(x, bins) | 使用數組指定Bucket的範圍,然後返回x所屬的Bucket。 | √ | × |
abs函數
abs函數用於計算x的絕對值。
文法
abs(x)
參數說明
參數 | 說明 |
x | 參數值為smallint類型、integer類型、real類型、tinyint類型、bigint類型、double類型或decimal類型。 |
傳回值類型
與參數值的類型一致。
樣本
計算-25的絕對值。
查詢和分析語句
* | select abs(-25)
查詢和分析結果
acos函數
acos函數用於計算x的反餘弦。
文法
acos(x)
參數說明
參數 | 說明 |
x | 參數值為double類型,取值範圍為[-1,1]。 如果超出[-1,1],則返回NaN。 |
傳回值類型
double類型。
樣本
計算45°角的反餘弦。
查詢和分析語句
* | SELECT acos(pi()/4)
查詢和分析結果
asin函數
asin函數用於計算x的反正弦。
文法
asin(x)
參數說明
參數 | 說明 |
x | 參數值為double類型,取值範圍為[-1,1]。 如果超出[-1,1],則返回NaN。 |
傳回值類型
double類型。
樣本
計算45°角的反正弦。
查詢和分析語句
* | SELECT asin(pi()/4)
查詢和分析結果
atan函數
atan函數用於計算x的反正切。
文法
atan(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算45°角的反正切。
查詢和分析語句
* | SELECT atan(pi()/4)
查詢和分析結果
atan2函數
atan2函數用於計算x和y相除的結果的反正切。
文法
atan2(x, y)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
y | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算30°角的反正切。
查詢和分析語句
* | SELECT atan2(pi(),6)
查詢和分析結果
cbrt函數
cbrt函數用於計算x的立方根。
文法
cbrt(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算100的立方根。
查詢和分析語句
* | select cbrt(100)
查詢和分析結果
ceil函數
ceil函數用於對x進行向上取整數。ceil函數是ceiling函數的別名。
文法
ceil(x)
參數說明
參數 | 說明 |
x | 參數值為tinyint、smallint、integer、real、bigint、double、decimal類型 。
|
傳回值類型
與參數值的類型一致。
樣本
對request_time欄位的值進行向上取整數。
欄位範例
request_time:9.3
查詢和分析語句
* | SELECT ceil(request_time) AS request_time
查詢和分析結果
ceiling函數
ceiling函數用於對x進行向上取整數。
文法
ceiling(x)
參數說明
參數 | 說明 |
x | 參數值為tinyint、smallint、integer、real、bigint、double、decimal類型 。
|
傳回值類型
與參數值的類型一致。
樣本
對request_time欄位的值進行向上取整數。
欄位範例
request_time:9.3
查詢和分析語句
* | SELECT ceiling(request_time) AS request_time
查詢和分析結果
cos函數
cos函數用於計算x的餘弦。
文法
cos(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算30°角的餘弦。
查詢和分析語句
* | SELECT cos(pi()/6)
查詢和分析結果
cosh函數
cosh函數用於計算x的雙曲餘弦。
文法
cosh(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算30°角的雙曲餘弦。
查詢和分析語句
* | SELECT cosh(pi()/6)
查詢和分析結果
cosine_similarity函數
cosine_similarity函數用於計算x和y之間的餘弦相似性。
文法
cosine_similarity(x, y)
參數說明
參數 | 說明 |
x | 參數值為map(varchar,double)類型。 |
y | 參數值為map(varchar,double)類型。 |
傳回值類型
double類型。
樣本
計算兩個向量之間的餘弦相似性。
查詢和分析語句
* | SELECT cosine_similarity(MAP(ARRAY['a'], ARRAY[1.0]), MAP(ARRAY['a'], ARRAY[2.0]))
查詢和分析結果
degrees函數
degrees函數用於將弧度轉換為度。
文法
degrees(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
將弧度π轉換為度。
查詢和分析語句
* | SELECT degrees(pi())
查詢和分析結果
e函數
e函數用於返回自然底數e的值。
文法
e()
傳回值類型
double類型。
樣本
返回自然底數e的值。
查詢和分析語句
* | SELECT e()
查詢和分析結果
exp函數
exp函數用於計算自然底數e的x次冪。
文法
exp(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算自然底數e的3次冪。
查詢和分析語句
* | SELECT exp(3)
查詢和分析結果
floor函數
floor函數用於對x進行向下取整數。
文法
floor(x)
參數說明
參數 | 說明 |
x | 參數值為tinyint、smallint、integer、real、bigint、double、decimal類型 。
|
傳回值類型
double類型。
樣本
對request_time欄位的值進行向下取整數。
欄位範例
request_time:10.3
查詢和分析語句
* | SELECT floor(request_time) AS request_time
查詢和分析結果
from_base函數
from_base函數返回將字串x以y進位解釋得到的數值。
文法
from_base(x, y)
參數說明
參數 | 說明 |
x | 參數值為varchar類型。 |
y | 參數值為bigint類型。進位,取值範圍為[2,36]。 |
傳回值類型
bigint類型。
樣本
將字串1101轉換為數字。
查詢和分析語句
* | SELECT from_base('1101',2)
查詢和分析結果
ln函數
ln函數用於計算x的自然對數。
文法
ln(x)
參數說明
參數 | 說明 |
x | 參數值為double類型且大於0。 |
傳回值類型
double類型。
樣本
計算2的自然對數。
查詢和分析語句
* | SELECT ln(2)
查詢和分析結果
infinity函數
infinity函數用於返回正無窮的數值。
文法
infinity()
傳回值類型
double類型。
樣本
用於返回正無窮的數值。
查詢和分析語句
* | SELECT infinity()
查詢和分析結果
is_nan函數
is_nan函數用於判斷x是否為NaN。如果是,則返回true。
文法
is_nan(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
boolean類型。
樣本
判斷status欄位的值是否為NaN。
查詢和分析語句
* | SELECT is_nan(status)
查詢和分析結果
log2函數
log2函數用於計算x以2為底的對數。
文法
log2(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算100以2為底的對數。
查詢和分析語句
* | SELECT log2(100)
查詢和分析結果
log10函數
log10函數用於計算x以10為底的對數。
文法
log10(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算100以10為底的對數。
查詢和分析語句
* | SELECT log10(100)
查詢和分析結果
log函數
log函數用於計算x以y為底數的對數。
文法
log(x, y)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
y | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算100以5為底數的對數。
查詢和分析語句
* | SELECT log(100,5)
查詢和分析結果
mod函數
mod函數用於計算x與y相除的餘數。
文法
mod(x, y)
參數說明
參數 | 說明 |
x | 參數值為tinyint、smallint、integer、real、bigint、double、decimal類型。 |
y | 參數值為tinyint、smallint、integer、real、bigint、double、decimal類型。 |
傳回值類型
與參數值的資料類型一致。
樣本
計算100與30相除的餘數。
查詢和分析語句
* | SELECT mod(100,30)
查詢和分析結果
nan函數
nan函數用於返回一個NaN值(Not a Number)。
文法
nan()
傳回值類型
double類型。
樣本
返回一個NaN值。
查詢和分析語句
* | SELECT nan()
查詢和分析結果
pi函數
pi函數用於返回π值,精確到小數點後15位。
文法
pi()
傳回值類型
double類型。
樣本
返回π值,精確到小數點後15位。
查詢和分析語句
* | SELECT pi()
查詢和分析結果
pow函數
pow函數用於計算x的y次冪。pow函數是power函數的別名。
文法
pow(x, y)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
y | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算2的5次冪。
查詢和分析語句
* | SELECT pow(2,5)
查詢和分析結果
power函數
power用於計算x的y次冪。
文法
power(x, y)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
y | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算2的5次冪。
查詢和分析語句
* | SELECT power(2,5)
查詢和分析結果
radians函數
radians函數用於將度轉換為弧度。
文法
radians(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算180°對應的弧度。
查詢和分析語句
* | SELECT radians(180)
查詢和分析結果
rand函數
rand函數用於返回隨機數。
文法
rand()
傳回值類型
double類型。
樣本
返回一個隨機數。
查詢和分析語句
* | select rand()
查詢和分析結果
random函數
random函數用於返回[0,x)之間的隨機數。
文法
返回[0,1)之間的隨機數。
random()
返回[0,x)之間的隨機數。
random(x)
參數說明
參數 | 說明 |
x | 參數值為tinyint、smallint、integer或bigint類型。 |
傳回值類型
與參數值的類型一致。
樣本
返回[0,100)之間的隨機數。
查詢和分析語句
* | select random(100)
查詢和分析結果
round函數
round函數用於對x進行四捨五入。如果n存在,則保留n位小數;如果n不存在,則對x進行四捨五入取整數。
文法
對x進行四捨五入取整數。
round(x)
對x進行四捨五入且保留n位小數。
round(x, n)
參數說明
參數 | 說明 |
x | 參數值為tinyint、smallint、integer或bigint類型。 |
n | n位小數。 |
傳回值類型
與參數值的資料類型一致。
樣本
同比今天與昨天的訪問PV,並使用百分數表示。
查詢和分析語句
* | SELECT diff [1] AS today, round((diff [3] -1.0) * 100, 2) AS growth FROM (SELECT compare(pv, 86400) as diff FROM (SELECT COUNT(*) as pv FROM website_log))
查詢和分析結果
sign函數
sign函數用於返回x的符號,通過1、0、-1表示。
文法
sign(x)
參數說明
參數 | 說明 |
x | 參數值為integer、smallint、tinyint、real、 double、bigint或decimal(p,s)類型。
|
傳回值類型
與參數值的資料類型一致。
樣本
計算數字10的符號。
查詢和分析語句
* | SELECT sign(10)
查詢和分析結果
sin函數
sin函數用於計算x的正弦。
文法
sin(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算90°角的正弦。
查詢和分析語句
* | select sin(pi()/2)
查詢和分析結果
sqrt函數
sqrt函數用於計算x的平方根。
文法
sqrt(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算100的平方根。
查詢和分析語句
* | select sqrt(100)
查詢和分析結果
tan函數
tan函數用於計算x的正切。
文法
tan(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算tan30°角的正切。
查詢和分析語句
* | SELECT tan(pi()/6)
查詢和分析結果
tanh函數
tanh函數用於計算x的雙曲正切。
文法
tanh(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
計算30°的雙曲正切。
查詢和分析語句
* | SELECT tanh(pi()/6)
查詢和分析結果
to_base函數
to_base函數將根據BASE編碼將x轉為y進位的字串。
文法
to_base(x, y)
參數說明
參數 | 說明 |
x | 參數值為bigint類型。 |
y | 參數值為bigint類型。進位,取值範圍為[2,36]。 |
傳回值類型
varchar類型。
樣本
將180轉換為二進位字串。
查詢和分析語句
* | SELECT to_base(180, 2)
查詢和分析結果
truncate函數
truncate函數用於截斷x的小數部分。
文法
truncate(x)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
截斷11.11的小數部分。
查詢和分析語句
* | SELECT truncate(11.11)
查詢和分析結果
width_bucket函數
width_bucket函數用於返回x所屬的Bucket。
文法
將一段數值範圍劃分成大小相同的多個Bucket,然後返回x所屬的Bucket。
width_bucket(x, bound1, bound2, numBuckets)
使用數組指定Bucket的範圍,然後返回x所屬的Bucket。
width_bucket(x, bins)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
bound1 | 提供數值範圍的下限。 |
bound2 | 提供數值範圍的上限。 |
numBuckets | Bucket數量。大於0的整數。 |
bins | 使用數組指定Bucket的範圍。bins為double類型的數組。 |
傳回值類型
bigint類型。
x在指定範圍內,返回x的所屬的Bucket。
x在下限範圍外,返回0。
x在上限範圍外,返回numBuckets+1。
樣本
樣本1:將[10,80)範圍等分為7個Bucket,然後返回request_time欄位的各個值所屬的Bucket。
查詢和分析語句
* | SELECT request_time, width_bucket(request_time, 10, 80,7) AS numBuckets
查詢和分析結果
樣本2:使用數組指定7個Bucket的範圍,然後返回request_time欄位的各個值所屬的Bucket。
查詢和分析語句
* | SELECT request_time, width_bucket(request_time, array[10,20,30,40,50,60,70,80]) AS numBuckets
查詢和分析結果