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

Simple Log Service:集計関数

最終更新日:Aug 23, 2024

集計関数は、フィールドの値を計算し、単一の値を返します。 このトピックでは、集計関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。

次の表に、Simple Log Serviceでサポートされている集計機能を示します。

重要

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

関数

構文

説明

SQLでサポート

SPLでサポート

任意関数

任意 (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( ブール式)

すべてのログが指定された条件を満たすかどうかを確認します。 はいの場合、関数はtrueを返します。

この関数はすべての関数に相当します。

×

bool_or関数

bool_or( ブール式)

指定した条件を満たすログが存在するかどうかを確認します。 はいの場合、関数はtrueを返します。

×

チェックサム関数

checksum( x)

xフィールドの値のチェックサムを計算します。

×

カウント関数

count(*)

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

×

count(1)

ログの数をカウントします。 この関数は、count(*) 関数に相当します。

×

カウント (x)

xフィールドの値がNULLでないログの数をカウントします。

×

count_if関数

count_if( ブール式)

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

×

すべての関数

every( ブール式)

すべてのログが指定された条件を満たすかどうかを確認します。 はいの場合、関数はtrueを返します。

この関数は、bool_and関数に相当します。

×

geometric_mean関数

geometric_mean( x)

xフィールドの値の幾何平均を計算します。

×

尖度関数

尖度 (x)

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

×

map_union関数

map_union( x)

指定されたマップに対するユニオン演算の結果を返します。 複数の入力マップにキーが存在する場合、関数はキーの値の1つをランダムに返します。

×

max関数

max( x)

xフィールドの最大値を照会します。

×

max( x, n)

xフィールドのn個の最大値を照会します。 関数は配列を返します。

×

max_by関数

max_by( x, y)

yフィールドの最大値に関連付けられているxの値を照会します。

×

max_by( x, y, n)

yフィールドのn個の最大値に関連付けられているxの値を照会します。 関数は配列を返します。

×

min関数

min( x)

xフィールドの最小値を照会します。

×

min( x, n)

xフィールドのn個の最小値を照会します。 関数は配列を返します。

×

min_by関数

min_by( x, y)

yフィールドの最小値に関連付けられているxの値を照会します。

×

min_by( x, y, n)

yフィールドのn個の最小値に関連付けられているxの値を照会します。 関数は配列を返します。

×

歪度関数

skewness( x)

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

×

合計関数

sum( x)

xフィールドの値の合計を計算します。

×

任意関数

任意の関数は、xフィールドのランダムな非null値を返します。

構文

arbitrary(x)

Parameters

パラメーター

説明

x

このパラメーターの値は任意のデータ型です。

戻り値タイプ

パラメーター値のデータ型と同じです。

request_methodフィールドのnull以外の任意の値を返します。

  • クエリ文 (デバッグ)

    * | SELECT
      arbitrary(request_method) AS request_method
  • クエリと分析結果 arbitrary函数

avg関数

avg関数は、xフィールドの値の平均を計算します。

構文

avg(x)

Parameters

パラメーター

説明

x

このパラメーターの値は、double型、bigint型、decimal型、またはreal型です。

戻り値のデータ型

ダブルタイプ。

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

  • クエリ文 (デバッグ)

    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フィールドの値に対するビット単位のAND演算の結果を返します。

  • クエリ文 (デバッグ)

    * | SELECT
      bitwise_and_agg(status)
  • クエリと分析結果 AND

bitwise_or_agg関数

bitwise_or_agg関数は、xフィールドの値に対するビット単位のOR演算の結果を返します。

構文

bitwise_or_agg(x)

パラメーター

パラメーター

説明

x

このパラメーターの値はbigint型です。

戻り値のデータ型

バイナリ表現のbigint型。

request_timeフィールドの値に対するビット単位のOR演算の結果を返します。

  • クエリ文 (デバッグ)

    * | SELECT
      bitwise_or_agg(request_length)
  • クエリと分析結果 OR

bool_and関数

bool_and関数は、すべてのログが指定された条件を満たすかどうかをチェックします。 はいの場合、関数はtrueを返します。 この関数はすべての関数に相当します。

構文

bool_and(boolean expression)

Parameters

パラメーター

説明

ブール式

このパラメーターの値はブール式です。

戻り値タイプ

ブール型。

すべてのログでrequest_timeフィールドの値が100未満かどうかを確認します。 単位は秒です。 はいの場合、関数はtrueを返します。

  • クエリ文 (デバッグ)

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

bool_or関数

bool_or関数は、指定された条件を満たすログが存在するかどうかをチェックします。 はいの場合、関数はtrueを返します。

構文

bool_or(boolean expression)

パラメーター

パラメーター

説明

ブール式

このパラメーターの値はブール式です。

戻り値タイプ

ブール型。

request_timeフィールドの値が20未満のログが存在するかどうかを確認します。 単位は秒です。 はいの場合、関数はtrueを返します。

  • クエリ文 (デバッグ)

    * | SELECT
      bool_or(request_time < 20)
  • クエリと分析結果 bool_or

チェックサム関数

チェックサム関数は、xフィールドの値のチェックサムを計算します。

構文

checksum(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は任意のデータ型です。

戻り値のデータ型

文字列型。 結果はBase64-encodedです。

  • クエリ文 (デバッグ)

    * | SELECT
      checksum(request_method) AS request_method
  • クエリと分析結果 checksum

カウント機能

カウント機能はログの数をカウントします。

構文

  • 次の構文を使用する場合、この関数はログの数をカウントします。

    count(*)
  • 次の構文を使用する場合、関数はログの数をカウントします。これはcount(*) に相当します。

    count(1)
  • 次の構文を使用すると、xフィールドの値がNULLでないログの数がカウントされます。

    count(x)

パラメーター

パラメーター

説明

x

このパラメーターの値は任意のデータ型です。

戻り値のデータ型

整数型。

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

    • クエリ文 (デバッグ)

      * | SELECT
        count(*) AS PV
    • クエリと分析結果 count函数

  • 例2: request_methodフィールドの値がNULLでないログの数を数えます。

    • クエリ文 (デバッグ)

      * | SELECT
        count(request_method) AS count
    • クエリと分析結果 count函数

count_if関数

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

構文

count_if(boolean expression)

パラメーター

パラメーター

説明

ブール式

このパラメーターの値はブール式です。

戻り値のデータ型

整数型。

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型です。

戻り値のデータ型

ダブルタイプ。

request_timeフィールドの値の幾何平均を計算します。

  • クエリ文 (デバッグ)

    * | SELECT
      geometric_mean(request_time) AS time
  • クエリと分析結果 geometric_mean

すべての関数

すべてのログが指定された条件を満たすかどうかをチェックします。 はいの場合、関数はtrueを返します。 この関数は、bool_and関数に相当します。

構文

every(boolean expression)

パラメーター

パラメーター

説明

ブール式

このパラメーターの値はブール式です。

戻り値のデータ型

ブール型。

すべてのログでrequest_timeフィールドの値が100未満かどうかを確認します。 単位は秒です。 はいの場合、関数はtrueを返します。

  • クエリ文 (デバッグ)

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

尖度関数

尖度関数は、x場の値の尖度を計算する。

構文

kurtosis(x)

パラメーター

パラメーター

説明

x

このパラメーターの値はdouble型またはbigint型です。

戻り値のデータ型

ダブルタイプ。

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

  • クエリ文 (デバッグ)

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

map_union関数

map_union関数は、指定されたマップに対する結合操作の結果を返します。 複数の入力マップにキーが存在する場合、関数はキーの値の1つをランダムに返します。

構文

map_union(x)

パラメーター

パラメーター

説明

x

このパラメーターの値はmap型です。

戻り値のデータ型

マップタイプ。

etl_contextフィールドのマップに対してユニオン操作を実行し、マップの1つをランダムに返します。

  • サンプルフィールド

    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: request_timeフィールドの最大値を照会します。

    • クエリ文 (デバッグ)

      * | SELECT
        max(request_time) AS max_request_time
    • クエリと分析結果 MAX函数

  • 例2: request_timeフィールドの最大10個の値を照会します。

    • クエリ文 (デバッグ)

      * | SELECT
        max(request_time, 10) AS "top 10"
    • クエリと分析結果 max

max_by関数

次のリストは、max_by関数でサポートされている構文を示しています。

構文

  • 次の構文を使用すると、関数はyフィールドの最大値に関連付けられているxの値を照会します。

    max_by(x, y)
  • 次の構文を使用すると、関数はyフィールドのn個の最大値に関連付けられているxの値を照会します。 関数は配列を返します。

    max_by(x, y, n)

パラメーター

パラメーター

説明

x

このパラメーターの値は任意のデータ型です。

y

このパラメーターの値は任意のデータ型です。

n

このパラメーターの値は0より大きい整数です。

戻り値のデータ型

パラメーター値のデータ型と同じです。

  • 例1: 最大の消費量を持つ注文の時点を照会します。

    • クエリ文

      * | SELECT
        max_by(UsageEndTime, PretaxAmount) AS time
    • クエリと分析結果 max_by

  • 例2: request_timeフィールドの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: request_timeフィールドの最小値を照会します。

    • クエリ文 (デバッグ)

      * | SELECT
        min(request_time) AS min_request_time
    • クエリと分析結果 MIN函数

  • 例2: request_timeフィールドの10個の最小値を照会します。

    • クエリ文 (デバッグ)

      * | SELECT
        min(request_time, 10) 
    • クエリと分析結果 min

min_by関数

次のリストは、min_by関数でサポートされている構文を示しています。

構文

  • 次の構文を使用すると、関数はyフィールドの最小値に関連付けられているxの値を照会します。

    min_by(x, y)
  • 次の構文を使用すると、関数はyフィールドのn個の最小値に関連付けられているxの値を照会します。 関数は配列を返します。

    min_by(x, y, n)

パラメーター

パラメーター

説明

x

このパラメーターの値は任意のデータ型です。

y

このパラメーターの値は任意のデータ型です。

n

このパラメーターの値は0より大きい整数です。

戻り値のデータ型

パラメーター値のデータ型と同じです。

  • 例1: request_timeフィールドの値が最も小さいリクエストのリクエストメソッドを照会します。

    • クエリ文 (デバッグ)

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

  • 例2: request_timeフィールドの最小値が3つあるリクエストのリクエストメソッドを照会します。

    • クエリ文 (デバッグ)

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

歪度関数

歪度関数は、xフィールドの値の歪度を計算する。

構文

skewness(x)

パラメーター

パラメーター

説明

x

このパラメーターの値はdouble型またはbigint型です。

戻り値のデータ型

ダブルタイプ。

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

  • クエリ文 (デバッグ)

    *| 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函数