すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:集計関数

最終更新日:Jun 23, 2026

集計関数は、値のセットから単一の値を計算します。このトピックでは、集計関数の基本的な構文と使用例について説明します。

Simple Log Service は、次の集計関数をサポートしています。

重要 分析文で文字列を使用する場合は、文字列を単一引用符 (') で囲む必要があります。囲まれていない、または二重引用符 ("") で囲まれた文字列は、フィールド名または列名を示します。たとえば、'status' は status という文字列を示し、status または "status" は status ログフィールドを示します。

パラメーター

構文

説明

SQL サポート

SPL サポート

Arbitrary 関数

arbitrary(x)

x から NULL でない任意の値を返します。

×

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)

少なくとも 1 つのログが条件を満たす場合に true を返します。

×

checksum 関数

checksum(x)

x のチェックサムを計算します。

×

count 関数

count(*)

ログの総数を返します。

×

count(1)

ログの総数を返します。これは count(*) と等価です。

×

count(x)

x の値が NULL でないログの数を返します。

×

count_if 関数

count_if(boolean expression)

指定された条件を満たすログの数を返します。

×

すべての関数

every(boolean expression)

すべてのログが条件を満たす場合に true を返します。

every 関数は bool_and 関数と等価です。

×

geometric_mean 関数

geometric_mean(x)

x の幾何平均を計算します。

×

kurtosis 関数

kurtosis(x)

x の尖度を計算します。

×

map_union 関数

map_union(x)

列内のマップの和集合を返します。あるキーが複数のマップに存在する場合、そのキーに対する任意の値が選択されます。

×

max 関数

max(x)

x 内の最大値を返します。

×

max(x, n)

x 内の n 個の最大値を配列として返します。

×

max_by 関数

max_by(x, y)

y の最大値に関連付けられた x の値を返します。

×

max_by(x, y, n)

yn 個の最大値に対応する x の値の配列を返します。

×

min 関数

min(x)

x 内の最小値を返します。

×

min(x, n)

x 内の n 個の最小値を配列として返します。

×

min_by 関数

min_by(x, y)

y の最小値に関連付けられた x の値を返します。

×

min_by(x, y, n)

yn 個の最小値に対応する x の値の配列を返します。

×

skewness 関数

skewness(x)

x の歪度を計算します。

×

sum 関数

sum(x)

x の合計を計算します。

×

Arbitrary 関数

arbitrary 関数は、式 x から NULL でない任意の値を返します。

構文

arbitrary(x)

パラメーター

パラメーター

説明

x

任意のデータ型の式。

戻り値の型

入力式と同じデータ型です。

request_method フィールドから NULL でない任意の値を返します。

  • クエリ文 (デバッグ)

    * | SELECT
      arbitrary(request_method) AS request_method
  • request_method 列は GET のような値を返します。

Avg 関数

avg 関数は、x 内の値の平均を返します。

構文

avg(x)

パラメーター

パラメーター

説明

x

平均を計算する列または式。値は double、bigint、decimal、または real 型である必要があります。

戻り値の型

double 型の値。

平均レイテンシーが 1,000 マイクロ秒を超えるプロジェクトを返します。

  • クエリ文 (デバッグ)

    method: PostLogstoreLogs | SELECT
      avg(latency) AS avg_latency,
      Project
    GROUP BY
      Project
    HAVING
      avg_latency > 1000
  • クエリは、avg_latency3223.4162679425835 で、Project 名が datalab-14 で始まるレコードを返します。

bitwise_and_agg 関数

bitwise_and_agg 関数は、x 内のすべての値のビット単位の AND を返します。

構文

bitwise_and_agg(x)

パラメーター

パラメーター

説明

x

bigint 型の値。

戻り値の型

bigint 型の値。

status フィールドのすべての値に対してビット単位の AND 演算を実行します。

  • クエリ文 (デバッグ)

    * | SELECT
      bitwise_and_agg(status)
  • クエリは _col0 という名前の単一の列を返し、その値は 0 です。

Bitwise_or_agg 関数

bitwise_or_agg 関数は、x 内のすべての値に対するビット単位の OR 演算の結果を返します。

構文

bitwise_or_agg(x)

パラメーター

パラメーター

説明

x

bigint 型の値。

戻り値の型

bigint 型の値。

request_time フィールドのすべての値に対してビット単位の OR 演算を実行します。

  • クエリと分析文 (デバッグ)

    * | SELECT
      bitwise_or_agg(request_length)
  • クエリと分析の結果は、単一の列 _col0 として返され、その値は 16383 です。

bool_and 関数

bool_and 関数は、すべてのログに対してブール式が true の場合に true を返します。この関数は every 関数と等価です。

構文

bool_and(boolean expression)

パラメーター

パラメーター

説明

boolean expression

評価するブール式。

戻り値の型

boolean

この例では、すべてのログの request_time の値が 100 未満であるかどうかを確認します。

  • クエリと分析文 (デバッグ)

    * | SELECT
      bool_and(request_time < 100)
  • クエリと分析の結果は true であり、すべてのログの request_time の値が 100 未満であることを示します。

bool_or 関数

bool_or 関数は、少なくとも 1 つのログに対してブール式が true の場合に true を返します。

構文

bool_or(boolean expression)

パラメーター

パラメーター

説明

boolean expression

ブール式。

戻り値の型

boolean

いずれかのログの request_time が 20 未満であるかどうかを確認するには:

  • クエリと分析文 (デバッグ)

    * | SELECT
      bool_or(request_time < 20)
  • クエリと分析の結果は、_col0 列に対して true を返します。これは、ログに request_time が 20 未満のレコードが含まれていることを示します。

Checksum 関数

checksum 関数は、x のチェックサムを計算します。

構文

checksum(x)

パラメーター

パラメーター

説明

x

任意のデータ型の式。

戻り値の型

Base64 エンコードされた文字列。

  • クエリ文 (デバッグ)

    * | SELECT
      checksum(request_method) AS request_method
  • request_method フィールドのチェックサムは NDXFdgnd8GE= です。

Count 関数

count 関数はログをカウントします。

構文

  • ログの総数をカウントします。

    count(*)
  • ログの総数を返します。これは count(*) と等価です。

    count(1)
  • x が NULL でないログをカウントします。

    count(x)

パラメーター

パラメーター

説明

x

任意のデータ型の式。

戻り値の型

整数。

  • 例 1:Web サイトのページビューをカウントします。

    • クエリ文 (デバッグ)

      * | SELECT
        count(*) AS PV
    • クエリと分析の結果:結果テーブルには、値が 2009PV 列が含まれます。

  • 例 2:request_method フィールドが null でないログをカウントします。

    • クエリ文 (デバッグ)

      * | SELECT
        count(request_method) AS count
    • クエリと分析の結果:結果テーブルには、値が 1954count 列が含まれます。

count_if 関数

count_if 関数は、指定された条件を満たすログをカウントします。

構文

count_if(boolean expression)

パラメーター

パラメーター

説明

boolean expression

評価する条件。

戻り値の型

条件を満たすログの数。

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
  • クエリと分析の結果は、値が 39.443123208882308time 列を示します。

すべての関数

every 関数は、すべてのログに対してブール式が true と評価された場合に true を返します。この関数は bool_and 関数と等価です。

構文

every(boolean expression)

パラメーター

パラメーター

説明

boolean expression

各ログに対してブール値を返す式。

戻り値の型

ブール値を返します。

この例では、すべてのログの request_time の値が 100 未満であるかどうかを確認します。

  • クエリと分析文 (デバッグ)

    * | SELECT
      every(request_time < 100)
  • クエリと分析の結果

Kurtosis 関数

x の尖度を計算します。

構文

kurtosis(x)

パラメーター

パラメーター

説明

x

値は double または bigint である必要があります。

戻り値の型

double

request_time フィールドの尖度を計算します。

  • クエリ文 (デバッグ)

    *| SELECT
      kurtosis(request_time)
  • クエリと分析の結果

    kurtosis
    -3.0006998250171186

map_union 関数

map_union 関数は、列内のすべてのマップの和集合を返します。同じキーが複数の入力マップに存在する場合、結果のマップ内のそのキーの値は、入力のいずれかから非決定的に選択されます。

構文

map_union(x)

パラメーター

パラメーター

説明

x

map 型の列。

戻り値の型

map 型の単一の値を返します。

この例では、etl_context フィールドのマップ値を単一のマップに集計します。

  • サンプルフィールド

    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)
  • xn 個の最大値の配列を返します。

    max(x, n)

パラメーター

パラメーター

説明

x

任意の式。

n

正の整数。

戻り値の型

入力式と同じデータ型。

  • 例 1:最大リクエスト時間を見つけます。

    • クエリ文 (デバッグ)

      * | SELECT
        max(request_time) AS max_request_time
    • クエリと分析の結果:max_request_time の値は 80.0 です。

  • 例 2:リクエスト時間の上位 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] を返します。配列には、降順でソートされた 10 個の最大の request_time 値が含まれます。

Max_by 関数

max_by 関数は、次の 2 つの構文をサポートしています。

構文

  • y の最大値に対する x の値を返します。

    max_by(x, y)
  • yn 個の最大値に対する x の値の配列を返します。

    max_by(x, y, n)

パラメーター

パラメーター

説明

x

任意のデータ型の式。

y

任意のデータ型の式。

n

正の整数。

戻り値の型

x のデータ型と同じです。

  • 例 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 関数には、次の 2 つの構文があります。

構文

  • y の最小値に対する x の値を返します。

    min_by(x, y)
  • yn 個の最小値に対する x の値の配列を返します。

    min_by(x, y, n)

パラメーター

パラメーター

説明

x

任意のデータ型の式。

y

任意のデータ型の式。

n

正の整数。

戻り値の型

x パラメーターと同じデータ型。

  • 例 1:最小リクエスト時間のリクエストメソッドを見つけます。

    • クエリと分析文 (デバッグ)

      * | SELECT
        min_by(request_method, request_time) AS method
    • クエリと分析の結果:method 列は GET を返します。

  • 例 2:最小リクエスト時間の 3 つのリクエストのリクエストメソッドを見つけます。

    • クエリと分析文 (デバッグ)

      * | SELECT
        min_by(request_method, request_time, 3) AS method
    • クエリと分析の結果。

Skewness 関数

skewness 関数は、式 x の歪度を計算します。

構文

skewness(x)

パラメーター

パラメーター

説明

x

double または bigint 型に評価される式。

戻り値の型

double

request_time フィールドの値の歪度を計算します。

  • クエリと分析文 (デバッグ)

    *| SELECT
      skewness(request_time) AS skewness
  • クエリと分析の結果:skewness の値は 0.00042944441602043965 です。

Sum 関数

sum 関数は、式 x 内の値を合計します。

構文

sum(x)

パラメーター

パラメーター

説明

x

double、bigint、decimal、または real 型に評価される式。

戻り値の型

入力式と同じデータ型。

Web サイトの日次トラフィックを計算します。

  • クエリと分析文 (デバッグ)

    * | 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 の合計が含まれます。