全部產品
Search
文件中心

Simple Log Service:彙總函式

更新時間:Jun 30, 2024

彙總函式用於對目標數值執行計算並返回結果。本文介紹彙總函式的基本文法及樣本。

Simple Log Service支援如下彙總函式。

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

函數名稱

文法

說明

支援SQL

支援SPL

arbitrary函數

arbitrary(x)

返回x中任意一個非空的值。

×

avg函數

avg(x)

計算x的算術平均值。

×

bitwise_and_agg函數

bitwise_and_agg(x)

返回x中所有值按位與運算(AND)的結果。

×

bitwise_or_agg函數

bitwise_or_agg(x)

返回x中所有值按位或運算(OR)的結果。

×

bool_and函數

bool_and(boolean expression)

判斷是否所有日誌都滿足條件。如果是,則返回true。

bool_and函數等同於every函數。

×

bool_or函數

bool_or(boolean expression)

判斷是否存在日誌滿足條件。如果存在,則返回true。

×

checksum函數

checksum(x)

計算x的校正和。

×

count函數

count(*)

統計所有的日誌條數。

×

count(1)

統計所有的日誌條數,等同於count(*)。

×

count(x)

統計x中值不為NULL的日誌條數。

×

count_if函數

count_if(boolean expression)

統計滿足指定條件的日誌條數。

×

every函數

every(boolean expression)

判斷是否所有日誌都滿足條件。如果是,則返回true。

every函數等同於bool_and函數。

×

geometric_mean函數

geometric_mean(x)

計算x的幾何平均數。

×

kurtosis函數

kurtosis(x)

計算x的峰度。

×

map_union函數

map_union(x)

返回一列Map資料的並集。 如果Map中存在相同的鍵,則返回的索引值為其中任意一個鍵的值。

×

max函數

max(x)

查詢x中的最大值。

×

max(x, n)

查詢x中最大的n個值。返回結果為數組。

×

max_by函數

max_by(x, y)

查詢y為最大值時對應的x值。

×

max_by(x, y, n)

查詢最大的ny值對應的x值,返回結果為數組。

×

min函數

min(x)

查詢x中最小值。

×

min(x, n)

查詢x中最小的n個值。返回結果為數組。

×

min_by函數

min_by(x, y)

查詢y為最小值時對應的x值。

×

min_by(x, y, n)

查詢最小的ny值對應的x值。返回結果為數組。

×

skewness函數

skewness(x)

計算x的偏度。

×

sum函數

sum(x)

計算x的總值。

×

arbitrary函數

arbitrary函數用於返回x中任意一個非空的值。

文法

arbitrary(x)

參數說明

參數

說明

x

參數值為任意資料類型。

傳回值類型

與參數值的資料類型一致。

樣本

返回request_method欄位中任意一個非空的欄位值。

  • 查詢和分析語句(調試

    * | SELECT
      arbitrary(request_method) AS request_method
  • 查詢和分析結果arbitrary函數

avg函數

avg函數用於計算x的算術平均值。

文法

avg(x)

參數說明

參數

說明

x

參數值為double、bigint、decimal或real類型。

傳回值類型

double類型。

樣本

返回平均延遲時間高於1000微秒的Project。

  • 查詢和分析語句(調試

    method: PostLogstoreLogs | SELECT
      avg(latency) AS avg_latency,
      Project
    GROUP BY
      Project
    HAVING
      avg_latency > 1000
  • 查詢和分析結果avg函數

bitwise_and_agg函數

bitwise_and_agg函數用於返回x中所有值按位與運算(AND)的結果。

文法

bitwise_and_agg(x)

參數說明

參數

說明

x

參數值為bigint類型。

傳回值類型

bigint類型(二進位形式)。

樣本

request_time欄位的所有值進行按位與運算。

  • 查詢和分析語句(調試

    * | SELECT
      bitwise_and_agg(status)
  • 查詢和分析結果AND

bitwise_or_agg函數

bitwise_or_agg函數用於返回x中所有值按位或運算(OR)的結果。

文法

bitwise_or_agg(x)

參數說明

參數

說明

x

參數值為bigint類型。

傳回值類型

bigint類型(二進位形式)。

樣本

request_time欄位的所有值進行按位或運算。

  • 查詢和分析語句(調試

    * | SELECT
      bitwise_or_agg(request_length)
  • 查詢和分析結果OR

bool_and函數

bool_and函數用於判斷是否所有日誌都滿足條件。如果是,則返回true。bool_and函數等同於every函數。

文法

bool_and(boolean expression)

參數說明

參數

說明

boolean expression

參數值為布林運算式。

傳回值類型

boolean類型。

樣本

判斷所有請求的時間是否都小於100秒。如果是,則返回true。

  • 查詢和分析語句(調試

    * | SELECT
      bool_and(request_time < 100)
  • 查詢和分析結果bool_and

bool_or函數

bool_or函數用於判斷是否存在日誌滿足條件。如果存在,則返回true。

文法

bool_or(boolean expression)

參數說明

參數

說明

boolean expression

參數值為布林運算式。

傳回值類型

boolean類型。

樣本

判斷是否存在請求時間小於20秒的請求。如果存在,則返回true。

  • 查詢和分析語句(調試

    * | SELECT
      bool_or(request_time < 20)
  • 查詢和分析結果bool_or

checksum函數

checksum函數用於計算x的校正和。

文法

checksum(x)

參數說明

參數

說明

x

參數值為任意資料類型。

傳回值類型

string類型(BASE 64編碼)。

樣本

  • 查詢和分析語句(調試

    * | SELECT
      checksum(request_method) AS request_method
  • 查詢和分析結果checksum

count函數

count函數用於計數。

文法

  • 統計所有的日誌條數。

    count(*)
  • 統計所有的日誌條數。等同於count(*)

    count(1)
  • 統計x中值不為NULL的日誌條數。

    count(x)

參數說明

參數

說明

x

參數值為任意資料類型。

傳回值類型

integer類型。

樣本

  • 樣本1:統計網站訪問量。

    • 查詢和分析語句(調試

      * | SELECT
        count(*) AS PV
    • 查詢和分析結果count函數

  • 樣本2:統計包含request_method欄位且欄位值不為NULL的日誌條數。

    • 查詢和分析語句(調試

      * | SELECT
        count(request_method) AS count
    • 查詢和分析結果count函數

count_if函數

count_if函數用於統計滿足指定條件的日誌條數。

文法

count_if(boolean expression)

參數說明

參數

說明

boolean expression

參數值為布林運算式。

傳回值類型

integer類型。

樣本

統計request_uri欄位的值是以file-0結尾的日誌條數。

  • 查詢和分析語句(調試

    * | SELECT
      count_if(request_uri like '%file-0') AS count
  • 查詢和分析結果count函數

geometric_mean函數

geometric_mean函數用於計算x的幾何平均數。

文法

geometric_mean(x)

參數說明

參數

說明

x

參數值為double、bigint或real類型。

傳回值類型

double類型。

樣本

統計請求時間長度的幾何平均值。

  • 查詢和分析語句(調試

    * | SELECT
      geometric_mean(request_time) AS time
  • 查詢和分析結果geometric_mean

every函數

every函數用於判斷是否所有日誌都滿足條件。如果是,則返回true。every函數等同於bool_and函數。

文法

every(boolean expression)

參數說明

參數

說明

boolean expression

參數值為布林運算式。

傳回值類型

boolean類型。

樣本

判斷所有請求的時間是否都小於100秒。如果是,則返回true。

  • 查詢和分析語句(調試

    * | SELECT
      every(request_time < 100)
  • 查詢和分析結果bool_and

kurtosis函數

kurtosis函數用於計算x的峰度。

文法

kurtosis(x)

參數說明

參數

說明

x

參數值為double、bigint類型。

傳回值類型

double類型。

樣本

計算請求時間的峰度。

  • 查詢和分析語句(調試

    *| SELECT
      kurtosis(request_time)
  • 查詢和分析結果kurtosis

map_union函數

map_union函數用於返回一列Map資料的並集。 如果Map中存在相同的鍵,則返回的索引值為其中任意一個鍵的值。

文法

map_union(x)

參數說明

參數

說明

x

參數值為map類型。

傳回值類型

map類型。

樣本

etl_context欄位的值(map類型)彙總後,隨機返回其中一個值(map類型)。

  • 欄位範例

    etl_context: {
     project:"datalab-148****6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83****4d1965"
     consumer:"etl-b2d40ed****c8d6-291294"
     shard_id:"0" }
  • 查詢和分析語句

    * | SELECT
      map_union(
        try_cast(json_parse(etl_context) AS map(varchar, varchar))
      )
  • 查詢和分析結果 map_union

max函數

max函數用於查詢x中最大的值。

文法

  • 查詢x中最大的值。

    max(x)
  • 查詢x中最大的n個值,返回結果為數組。

    max(x, n)

參數說明

參數

說明

x

參數值為任意資料類型。

n

參數值為正整數。

傳回值類型

與參數值的資料類型一致。

樣本

  • 樣本1:查詢請求時間長度的最大值。

    • 查詢和分析語句(調試

      * | SELECT
        max(request_time) AS max_request_time
    • 查詢和分析結果MAX函數

  • 樣本2:查詢請求時間長度的top 10。

    • 查詢和分析語句(調試

      * | SELECT
        max(request_time, 10) AS "top 10"
    • 查詢和分析結果max

max_by函數

max_by函數支援如下兩種用法。

文法

  • 查詢y為最大值時對應的x值。

    max_by(x, y)
  • 查詢最大的ny值對應的x值,返回結果為數組。

    max_by(x, y, n)

參數說明

參數

說明

x

參數值為任意資料類型。

y

參數值為任意資料類型。

n

大於0的整數。

傳回值類型

與參數值的資料類型一致。

樣本

  • 樣本1:統計最高消費訂單對應的時間點。

    • 查詢和分析語句

      * | SELECT
        max_by(UsageEndTime, PretaxAmount) AS time
    • 查詢和分析結果max_by

  • 樣本2:統計請求時間長度最大的3個請求對應的要求方法。

    • 查詢和分析語句(調試

      * | SELECT
        max_by(request_method, request_time, 3) AS method
    • 查詢和分析結果max_by

min函數

min函數用於查詢x中最小值。

文法

  • 查詢x中最小值。

    min(x)
  • 查詢x中最小的n個值,返回結果為數組。

    min(x,n)

參數說明

參數

說明

x

參數值為任意資料類型。

n

參數值為正整數。

傳回值類型

與參數值的資料類型一致。

樣本

  • 樣本1:查詢請求時間長度的最小值。

    • 查詢與分析語句(調試

      * | SELECT
        min(request_time) AS min_request_time
    • 查詢和分析結果MIN函數

  • 樣本2:查詢請求時間長度最小的10個值。

    • 查詢和分析語句(調試

      * | SELECT
        min(request_time, 10)
    • 查詢和分析結果min

min_by函數

min_by函數支援如下兩種用法。

文法

  • 查詢y為最小值時對應的x值。

    min_by(x, y)
  • 查詢最小的ny值對應的x值。返回結果為數組。

    min_by(x, y, n)

參數說明

參數

說明

x

參數值為任意資料類型。

y

參數值為任意資料類型。

n

大於0的整數。

傳回值類型

與參數值的資料類型一致。

樣本

  • 樣本1:返回最小請求時間長度的請求對應的要求方法。

    • 查詢和分析語句(調試

      * | SELECT
        min_by(request_method, request_time) AS method
    • 查詢和分析結果min_by

  • 樣本2:返回請求時間長度最小的3個請求對應的要求方法。

    • 查詢和分析語句(調試

      * | SELECT
        min_by(request_method, request_time, 3) AS method
    • 查詢和分析結果max_by

skewness函數

skewness函數用於計算x的偏度。

文法

skewness(x)

參數說明

參數

說明

x

參數值為double、bigint類型。

傳回值類型

double類型。

樣本

計算請求時間的偏度。

  • 查詢和分析語句(調試

    *| SELECT
      skewness(request_time) AS skewness
  • 查詢和分析結果skewness

sum函數

sum函數用於計算x的總值。

文法

sum(x)

參數說明

參數

說明

x

參數值為double、bigint、decimal或real類型。

傳回值類型

與參數值的資料類型一致。

樣本

計算網站每天的訪問流量。

  • 查詢和分析語句(調試

    * | SELECT
      date_trunc('day', __time__) AS time,
      sum(body_bytes_sent) AS body_bytes_sent
    GROUP BY
      time
    ORDER BY
      time
  • 查詢和分析結果SUM函數