聚合函数用于对目标字段执行计算并返回结果。本文介绍通用聚合函数的基本语法及示例。

日志服务支持如下聚合函数。

注意 在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status"status"表示日志字段status。
函数名称 语法 说明
arbitrary函数 arbitrary(key) 返回目标字段中任意一个非空的字段值。
avg函数 avg(key) 计算目标字段的算术平均值。
bitwise_and_agg函数 bitwise_and_agg(key) 统计目标字段的所有值按位与运算(AND)的结果。
bitwise_or_agg函数 bitwise_or_agg(key) 统计目标字段的所有值按位或运算(OR)的结果。
checksum函数 hecksum(key) 计算目标字段的校验和。
count函数 count(*) 统计所有的日志条数。
count(1) 统计所有的日志条数,等同于count(*)。
count(key) 统计目标字段的字段值不为空的日志条数。
count_if函数 count_if(boolean expression) 统计目标字段满足指定条件的日志条数。
geometric_mean函数 geometric_mean(key) 计算目标字段的几何平均数。
max函数 max(key) 查询目标字段中最大的字段值。
max_by函数 max_by(key01,key02) 返回key02字段为最大值时对应的key01字段的值。
max_by(key01,key02,n) 返回key02最大的N行对应的key01的值,返回结果为JSON数组。
min函数 min(key) 用于查询目标字段中最小的字段值。
min_by函数 min_by(key01,key02) key02字段为最小值时对应的key01字段的值。
min_by(key01,key02,n) 返回key02最小的N行对应的key01的值。返回结果为JSON数组。
sum函数 sum(key) 计算目标字段的总值。

arbitrary函数

arbitrary函数用于返回目标字段中任意一个非空的字段值。

语法

arbitrary(key)

参数说明

key:字段名称,字段值可以为任意数据类型。

返回值类型

与字段值的数据类型一致。

示例

返回request_method字段中任意一个非空的字段值。

  • 查询和分析语句
    * | SELECT arbitrary(request_method) AS request_method
  • 查询和分析结果arbitrary函数

avg函数

avg函数用于计算目标字段的算术平均值。

语法

avg(key)

参数说明

key:字段名称,字段值为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函数用于统计目标字段的所有值按位与运算(AND)的结果。

语法

bitwise_and_agg(key)

参数说明

key:字段名称,字段值为bigint类型。

返回值类型

bigint类型(二进制形式)。

示例

request_time字段的所有值进行按位与运算。

  • 查询和分析语句
    * | SELECT bitwise_and_agg(status)
  • 查询和分析结果AND

bitwise_or_agg函数

bitwise_or_agg函数用于统计目标字段的所有值按位或运算(OR)的结果。

语法

bitwise_or_agg(key)

参数说明

key:字段名称,字段值为bigint类型。

返回值类型

bigint类型(二进制形式)。

示例

request_time字段的所有值进行按位或运算。
  • 查询和分析语句
    * | SELECT bitwise_or_agg(request_length)
  • 查询和分析结果OR

checksum函数

checksum函数用于计算目标字段的校验和。

语法

checksum(key)

参数说明

key:字段名称,字段值可以为任意数据类型。

返回值类型

string类型(BASE 64编码)。

示例

  • 查询和分析语句
    * | SELECT checksum(request_method) AS request_method
  • 查询和分析结果checksum

count函数

count函数用于计数。

语法

  • 统计所有的日志条数。
    count(*)
  • 统计所有的日志条数。等同于count(*)
    count(1)
  • 统计目标字段的字段值不为空的日志条数。
    count(key)

参数说明

key:字段名称,字段值可以为任意数据类型。

返回值类型

integer类型。

示例

  • 示例1:统计网站访问量。
    • 查询和分析语句
      * | SELECT count(*) AS PV
    • 查询和分析结果count函数
  • 示例2:统计包含request_method字段且字段值不为空的日志条数。
    • 查询和分析语句
      * | 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函数用于计算目标字段的几何平均数。

语法

geometric_mean(key)

参数说明

key:字段名称,字段值为double、bigint或real类型。

返回值类型

double类型。

示例

统计请求时长的几何平均值。

  • 查询和分析语句
    * | SELECT geometric_mean(request_time) AS time
  • 查询和分析结果geometric_mean

max函数

max函数用于查询目标字段中最大的字段值。

语法

max(key)

参数说明

key:字段名称,字段值可以为任意数据类型。

返回值类型

与字段值的数据类型一致。

示例

查询请求时长的最大值。
  • 查询和分析语句
    * | SELECT max(request_time) AS max_request_time
  • 查询和分析结果MAX函数

max_by函数

max_by函数支持如下两种用法。

语法

  • key02字段为最大值时对应的key01字段的值。
    max_by(key01,key02)
  • 返回key02最大的N行对应的key01的值,返回结果为JSON数组。
    max_by(key01,key02,n)

参数说明

  • key01:字段名称,字段值可以为任意数据类型。
  • key02:字段名称,字段值可以为任意数据类型。
  • 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函数用于查询目标字段中最小的字段值。

语法

min(key)

参数说明

key:字段名称,字段值可以为任意数据类型。

返回值类型

与字段值的数据类型一致。

示例

查询请求时长的最大值。
  • 查询与分析语句
    * | SELECT min(request_time) AS min_request_time
  • 查询和分析结果MIN函数

min_by函数

min_by函数支持如下两种用法。

语法

  • key02字段为最小值时对应的key01字段的值。
    min_by(key01,key02)
  • 返回key02最小的N行对应的key01的值。返回结果为JSON数组。
    min_by(key01,key02,n)

参数说明

  • key01:字段名称,字段值可以为任意数据类型。
  • key02:字段名称,字段值可以为任意数据类型。
  • 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 time
    • 查询和分析结果max_by

sum函数

sum函数用于计算目标字段的总值。

语法

sum(key)

参数说明

key:字段名称,字段值为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函数