全部產品
Search
文件中心

Simple Log Service:彙總函式

更新時間:Jun 09, 2026

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

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
  • 查詢和分析結果中,request_method 列傳回值為 GET

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_latency 值為 3223.4162679425835,對應的 Project 值為以 datalab-14 開頭的專案名稱。

bitwise_and_agg函數

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

文法

bitwise_and_agg(x)

參數說明

參數

說明

x

參數值為bigint類型。

傳回值類型

bigint類型(二進位形式)。

樣本

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

  • 查詢和分析語句(調試

    * | SELECT
      bitwise_and_agg(status)
  • 查詢和分析結果為單列 _col0,傳回值為 0

bitwise_or_agg函數

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

文法

bitwise_or_agg(x)

參數說明

參數

說明

x

參數值為bigint類型。

傳回值類型

bigint類型(二進位形式)。

樣本

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

  • 查詢和分析語句(調試

    * | SELECT
      bitwise_or_agg(request_length)
  • 查詢和分析結果返回結果為單列 _col0,值為 16383

bool_and函數

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

文法

bool_and(boolean expression)

參數說明

參數

說明

boolean expression

參數值為布林運算式。

傳回值類型

boolean類型。

樣本

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

  • 查詢和分析語句(調試

    * | SELECT
      bool_and(request_time < 100)
  • 查詢和分析結果返回結果為 true,即所有日誌的 request_time 值均小於100。

bool_or函數

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

文法

bool_or(boolean expression)

參數說明

參數

說明

boolean expression

參數值為布林運算式。

傳回值類型

boolean類型。

樣本

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

  • 查詢和分析語句(調試

    * | SELECT
      bool_or(request_time < 20)
  • 查詢和分析結果為 _col0 列返回 true,表示日誌中存在 request_time 小於 20 的記錄。

checksum函數

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

文法

checksum(x)

參數說明

參數

說明

x

參數值為任意資料類型。

傳回值類型

string類型(BASE 64編碼)。

樣本

  • 查詢和分析語句(調試

    * | SELECT
      checksum(request_method) AS request_method
  • 查詢和分析結果中,request_method 欄位的校正值為 NDXFdgnd8GE=

count函數

count函數用於計數。

文法

  • 統計所有的日誌條數。

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

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

    count(x)

參數說明

參數

說明

x

參數值為任意資料類型。

傳回值類型

integer類型。

樣本

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

    • 查詢和分析語句(調試

      * | SELECT
        count(*) AS PV
    • 查詢和分析結果:查詢結果表格返回 PV 列,值為 2009

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

    • 查詢和分析語句(調試

      * | SELECT
        count(request_method) AS count
    • 查詢和分析結果返回 count 值為 1954

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

geometric_mean函數

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

文法

geometric_mean(x)

參數說明

參數

說明

x

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

傳回值類型

double類型。

樣本

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

  • 查詢和分析語句(調試

    * | SELECT
      geometric_mean(request_time) AS time
  • 查詢和分析結果中,time 列的值為 39.443123208882308

every函數

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

文法

every(boolean expression)

參數說明

參數

說明

boolean expression

參數值為布林運算式。

傳回值類型

boolean類型。

樣本

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

  • 查詢和分析語句(調試

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

kurtosis函數

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

文法

kurtosis(x)

參數說明

參數

說明

x

參數值為double、bigint類型。

傳回值類型

double類型。

樣本

計算請求時間的峰度。

  • 查詢和分析語句(調試

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

    kurtosis
    -3.0006998250171186

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))
      )
  • 查詢和分析結果:執行該查詢語句後,返回結果列名為 _col0,值為 etl_context 解析後的索引值對映射,包含 consumer_groupshard_idprojectlogstoreconsumer 等欄位及其對應值。

max函數

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

文法

  • 查詢x中最大的值。

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

    max(x, n)

參數說明

參數

說明

x

參數值為任意資料類型。

n

參數值為正整數。

傳回值類型

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

樣本

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

    • 查詢和分析語句(調試

      * | SELECT
        max(request_time) AS max_request_time
    • 查詢和分析結果:返回結果中 max_request_time 的值為 80.0

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

    • 查詢和分析語句(調試

      * | SELECT
        max(request_time, 10) AS "top 10"
    • 查詢和分析結果:查詢返回的 top 10 結果為 [80.0,80.0,80.0,80.0,80.0,79.0,79.0,79.0,78.0,78.0],即 request_time 最大的 10 個值按降序排列。

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
    • 查詢和分析結果:time列傳回值為1625731025

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

    • 查詢和分析語句(調試

      * | SELECT
        max_by(request_method, request_time, 3) AS method
    • 查詢和分析結果:method 的值為 ["POST","POST","POST"],表示按 request_time 排序最近 3 次請求的方法均為 POST。

min函數

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

文法

  • 查詢x中最小值。

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

    min(x,n)

參數說明

參數

說明

x

參數值為任意資料類型。

n

參數值為正整數。

傳回值類型

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

樣本

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

    • 查詢與分析語句(調試

      * | SELECT
        min(request_time) AS min_request_time
    • 查詢和分析結果返回 min_request_time 的值為 10.0

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

    • 查詢和分析語句(調試

      * | SELECT
        min(request_time, 10)
    • 查詢和分析結果返回 _col0 列,值為 [10.0,10.0,10.0,10.0,10.0,11.0,12.0,12.0,13.0,13.0]

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
    • 查詢和分析結果:method 列傳回值為 GET,表示請求時間最小的要求方法為 GET。

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

    • 查詢和分析語句(調試

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

skewness函數

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

文法

skewness(x)

參數說明

參數

說明

x

參數值為double、bigint類型。

傳回值類型

double類型。

樣本

計算請求時間的偏度。

  • 查詢和分析語句(調試

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

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
  • 查詢和分析結果:執行該查詢和分析語句後,返回按天匯總的統計結果表格,包含 2023-09-19 至 2023-09-23 共 5 天的 body_bytes_sent 總和資料。