本文介紹估算函數的基本文法及樣本。
Log Service支援如下估算函數。
函數名稱 | 文法 | 說明 | 支援SQL | 支援SPL |
approx_distinct(x) | 估算x中不重複值的個數,預設存在2.3%的標準誤差。 | √ | × | |
approx_distinct(x, e) | 估算x中不重複值的個數,支援自訂標準誤差。 | √ | × | |
approx_percentile(x, percentage) | 對x進行正序排列,返回大約處於percentage位置的x。 | √ | × | |
approx_percentile(x, array[percentage01, percentage02...]) | 對x進行正序排列,返回大約處於percentage01、percentage02位置的x。 | √ | × | |
approx_percentile(x, weight, percentage) | 對x和權重的乘積進行正序排列,返回大約處於percentage位置的x。 | √ | × | |
approx_percentile(x, weight, array[percentage01, percentage02...]) | 對x和權重的乘積進行正序排列,返回大約處於percentage01、percentage02位置的x。 | √ | × | |
approx_percentile(x, weight, percentage, accuracy) | 對x和權重的乘積進行正序排列,返回大約處於percentage位置的x。支援設定返回結果的準確度。 | √ | × | |
numeric_histogram(bucket, x) | 按照bucket數量(長條圖列數),統計x的近似長條圖,返回結果為JSON類型。 | √ | × | |
numeric_histogram(bucket, x, weight) | 按照bucket數量(長條圖列數),統計x的近似長條圖,返回結果為JSON類型。支援對x設定權重。 | √ | × | |
numeric_histogram_u(bucket, x) | 按照bucket數量(長條圖列數),統計x的近似長條圖,返回結果為多行多列格式。 | √ | × |
approx_distinct函數
approx_distinct函數用於估算x中不重複值的個數。
文法
估算x中不重複值的個數,預設存在2.3%的標準誤差。
approx_distinct(x)
估算x中不重複值的個數,支援自訂標準誤差。
approx_distinct(x, e)
參數說明
參數 | 說明 |
x | 參數值為任意資料類型。 |
e | 自訂標準誤差,取值為[0.0115, 0.26]。 |
傳回值類型
bigint類型。
樣本
樣本1:使用countFunction ComputePV,使用approx_distinct函數估算不重複的client_ip欄位值作為UV,標準誤差為2.3%。
查詢和分析語句
* |SELECT count(*) AS PV, approx_distinct(client_ip) AS UV
查詢和分析結果
樣本2:使用countFunction ComputePV,使用approx_distinct函數估算不重複的client_ip欄位值作為UV,自訂標準誤差為10%。
查詢和分析語句
* |SELECT count(*) AS PV, approx_distinct(client_ip,0.1) AS UV
查詢和分析結果
approx_percentile函數
approx_percentile函數用於對x進行正序排列,返回大約處於percentage位置的數值。
文法
對x進行正序排列,返回處於percentage位置的x,返回結果為double類型。
approx_percentile(x, percentage)
對x進行正序排列,返回處於percentage01、percentage02位置的x,返回結果為array(double,double)類型。
approx_percentile(x, array[percentage01, percentage02...])
對x和權重的乘積進行正序排列,返回大約處於percentage位置的x,返回結果為double類型。
approx_percentile(x, weight, percentage)
對x和權重的乘積進行正序排列,返回處於percentage01、percentage02位置的x,返回結果為array(double,double)類型。
approx_percentile(x, weight, array[percentage01, percentage02...])
對x和權重的乘積進行正序排列,返回大約處於percentage位置的x,返回結果為double類型。支援設定返回結果的準確度。
approx_percentile(x, weight, percentage, accuracy)
參數說明
參數 | 說明 |
x | 參數值為double類型。 |
percentage | 百分比值,取值範圍為[0,1]。 |
accuracy | 準確度,取值範圍為(0,1)。 |
weight | 權重,大於1的整數。 設定權重後,系統根據x與權重的乘積進行排序。 |
傳回值類型
double類型或array(double,double)類型。
樣本
樣本1:對request_time列進行排序後,返回大約處於50%位置的request_time欄位的值。
查詢和分析語句
*| SELECT approx_percentile(request_time,0.5)
查詢和分析結果
樣本2:對request_time列進行排序後,返回處於10%、20%及70%位置的request_time欄位的值。
查詢和分析語句
*| SELECT approx_percentile(request_time,array[0.1,0.2,0.7])
查詢和分析結果
樣本3:根據request_time與權重的乘積對request_time列進行排序後,返回大約處於50%位置的request_time欄位的值。其中,request_time<20時權重為100,否則權重為10。
查詢和分析語句
* | SELECT approx_percentile( request_time,case when request_time < 20 then 100 else 10 end, 0.5 )
查詢和分析結果
樣本4:根據request_time與權重的乘積對request_time列進行排序後,返回大約處於80%和90%位置的request_time欄位的值。其中,request_time<20時權重為100,否則權重為10。
查詢和分析語句
* | SELECT approx_percentile( request_time,case when request_time < 20 then 100 else 10 end, array [0.8,0.9] )
查詢和分析結果
樣本5:根據request_time與權重的乘積對request_time列進行排序後,返回大約處於50%位置的request_time欄位的值,準確度為0.2。其中,request_time<20時權重為100,否則權重為10。
查詢和分析語句
* | SELECT approx_percentile( request_time,case when request_time < 20 then 100 else 10 end, 0.5, 0.2 )
查詢和分析結果
numeric_histogram函數
numeric_histogram函數按照bucket數量(長條圖列數),統計x的近似長條圖。返回結果為JSON類型。
文法
按照bucket數量(長條圖列數),統計x的近似長條圖。
numeric_histogram(bucket, x)
按照bucket數量(長條圖列數),統計x的近似長條圖。支援為x設定權重。
numeric_histogram(bucket, x, weight)
參數說明
參數 | 說明 |
bucket | 長條圖中列的個數,bigint類型。 |
x | 參數值為double類型。 |
weight | 權重,大於0的整數。 設定權重後,系統根據x與權重的乘積進行分組。 |
傳回值類型
JSON類型。
樣本
樣本1:統計POST方法對應的請求時間長度的近似長條圖。
查詢和分析語句
request_method:POST | SELECT numeric_histogram(10,request_time)
查詢和分析結果
樣本2:根據request_time與權重的乘積對請求時間長度進行分組,從而統計POST方法對應的請求時間長度的近似長條圖。
查詢和分析語句
request_method:POST| SELECT numeric_histogram(10, request_time,case when request_time<20 then 100 else 10 end)
查詢和分析結果
numeric_histogram_u函數
numeric_histogram_u函數按照bucket數量(長條圖列數),統計x的近似長條圖。返回結果為多行多列格式。
文法
numeric_histogram_u(bucket, x)
參數說明
參數 | 說明 |
bucket | 長條圖中列的個數,bigint類型。 |
x | 參數值為double類型。 |
傳回值類型
double類型。
樣本
統計POST方法對應的請求時間長度的近似長條圖。
查詢和分析語句
request_method:POST | select numeric_histogram_u(10,request_time)
查詢和分析結果