全部產品
Search
文件中心

Simple Log Service:估算函數

更新時間:Jun 30, 2024

本文介紹估算函數的基本文法及樣本。

Log Service支援如下估算函數。

重要 在Log Service分析語句中,表示字串的字元必須使用單引號('')包裹,無符號包裹或被雙引號("")包裹的字元表示欄位名或列名。例如:'status'表示字串status,status"status"表示日誌欄位status。

函數名稱

文法

說明

支援SQL

支援SPL

approx_distinct函數

approx_distinct(x)

估算x中不重複值的個數,預設存在2.3%的標準誤差。

×

approx_distinct(x, e)

估算x中不重複值的個數,支援自訂標準誤差。

×

approx_percentile函數

approx_percentile(x, percentage)

x進行正序排列,返回大約處於percentage位置的x

×

approx_percentile(x, array[percentage01, percentage02...])

x進行正序排列,返回大約處於percentage01percentage02位置的x

×

approx_percentile(x, weight, percentage)

x和權重的乘積進行正序排列,返回大約處於percentage位置的x

×

approx_percentile(x, weight, array[percentage01, percentage02...])

x和權重的乘積進行正序排列,返回大約處於percentage01percentage02位置的x

×

approx_percentile(x, weight, percentage, accuracy)

x和權重的乘積進行正序排列,返回大約處於percentage位置的x。支援設定返回結果的準確度。

×

numeric_histogram函數

numeric_histogram(bucket, x)

按照bucket數量(長條圖列數),統計x的近似長條圖,返回結果為JSON類型。

×

numeric_histogram(bucket, x, weight)

按照bucket數量(長條圖列數),統計x的近似長條圖,返回結果為JSON類型。支援對x設定權重。

×

numeric_histogram_u函數

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
    • 查詢和分析結果approx_distinct

  • 樣本2:使用countFunction ComputePV,使用approx_distinct函數估算不重複的client_ip欄位值作為UV,自訂標準誤差為10%。

    • 查詢和分析語句

      * |SELECT count(*) AS PV, approx_distinct(client_ip,0.1) AS UV
    • 查詢和分析結果approx_distinct

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)
    • 查詢和分析結果approx_percentile

  • 樣本2:對request_time列進行排序後,返回處於10%、20%及70%位置的request_time欄位的值。

    • 查詢和分析語句

      *| SELECT approx_percentile(request_time,array[0.1,0.2,0.7])
    • 查詢和分析結果approx_percentile

  • 樣本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
        )
    • 查詢和分析結果approx_percentile

  • 樣本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]
        )
    • 查詢和分析結果approx_percentile

  • 樣本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
        )
    • 查詢和分析結果approx_percentile

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)
    • 查詢和分析結果numeric_histogram

  • 樣本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

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)
  • 查詢和分析結果numeric_histogram_u