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

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

重要 分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。
機能構文説明
任意関数任意 (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を返します。

This機能すべての機能と同等である。

bool_or関数bool_or( ブール式)指定された条件を満たすログエントリが存在するかどうかを確認します。 指定された条件を満たすログエントリが存在する場合、関数はtrueを返します。
チェックサム関数checksum(x)x フィールドの値のチェックサムを計算します。
カウント機能count(*)ログエントリの数をカウントします。
count(1)ログエントリの数をカウントします。 この関数は、count(*) 関数に相当します。
カウント (x)値がnullでないxフィールドを含むログエントリの数をカウントします。
count_if関数count_if( ブール式)指定された条件を満たすログエントリの数をカウントします。
すべての関数every( ブール式)すべてのログエントリが指定された条件を満たすかどうかを確認します。 すべてのログエントリが指定された条件を満たす場合、関数はtrueを返します。

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

geometric_mean関数geometric_mean(x)x フィールドの値の幾何平均を計算します。
尖度関数kurtosis(x)x フィールドの値の過剰尖度を計算します。
map_union関数map_union(x)指定されたマップに対するユニオン演算の結果を返します。 複数の入力マップが同じキーを持つ場合、関数はこれらの入力マップから任意の入力マップを選択して出力マップにします。
max関数max(x)x フィールドの最大値を照会します。
max( xn)x フィールドの最大値n個を照会します。 関数は配列を返します。
max_by関数max_by( xy)y フィールドの最大値に関連付けられているxの値を照会します。
max_by( xyn)y フィールドのn個の最大値に関連付けられているxの値を照会します。
min関数min(x)x フィールドの最小値を照会します。
min( xn)Queriesをn最小値のxフィールド。 The機能リターン配列。
min_by関数min_by( xy)y フィールドの最小値に関連付けられているxの値を照会します。
min_by( xyn)y フィールドのn個の最小値に関連付けられているxの値を照会します。 The機能リターン配列。
歪度関数歪度 (x)x フィールドの値の歪度を計算します。
sum関数sum(x)x フィールドの値の合計を計算します。

任意関数

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

構文

任意 (x)

パラメーター

項目説明
xこのパラメーターの値は、任意のデータ型にすることができます。

戻り値のデータ型

戻り値のデータ型は、パラメーターのデータ型と同じです。

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

  • クエリ文
    * | SELECT arbitrary(request_method) AS request_method
  • クエリ結果任意 () 関数

avg関数

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

構文

avg(x)

パラメーター

項目説明
xパラメーターは、double、bigint、decimal、またはrealのデータ型にすることができます。

戻り値のデータ型

doubleデータ型のデータ。

定義された項目の平均レイテンシが1,000マイクロ秒を超えるプロジェクトを返します。
  • クエリ文
    メソッド: PostLogstoreLogs | SELECT avg(latency) AS avg_latency, Project GROUP BY Project HAVING avg_latency > 1000
  • クエリ結果avg() 関数

bitwise_and_agg関数

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

構文

bitwise_and_agg(x)

パラメーター

項目説明
xパラメーターは、bigintデータ型にすることができます。

戻り値のデータ型

bigintデータ型のデータ。 結果はバイナリを表します。

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

  • クエリ文
    * | SELECT bitwise_and_agg (ステータス)
  • クエリ結果AND

bitwise_or_agg関数

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

構文

bitwise_or_agg(x)

パラメーター

項目説明
xパラメーターは、bigintデータ型にすることができます。

戻り値のデータ型

bigintデータ型のデータ。 結果はバイナリを表します。

request_timeフィールドの値に対するビット単位のOR演算の結果を返します。
  • クエリ文
    * | SELECT bitwise_or_agg(request_length)
  • クエリ結果OR

bool_and関数

すべてのログエントリが指定された条件を満たすかどうかを確認します。 すべてのログエントリが指定された条件を満たす場合、関数はtrueを返します。 This機能すべての機能と同等である。

構文

bool_and( ブール式)

パラメーター

項目説明
ブール式パラメーターはブール式にすることができます。

戻り値のデータ型

booleanデータ型のデータ。

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

  • クエリ文
    * | SELECT bool_and(request_time < 100)
  • クエリ結果bool_and

bool_or関数

指定された条件を満たすログエントリが存在するかどうかを確認します。 指定された条件を満たすログエントリが存在する場合、関数はtrueを返します。

構文

bool_or( ブール式)

パラメーター

項目説明
ブール式パラメーターはブール式にすることができます。

戻り値のデータ型

ブール型のデータ。

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

  • クエリ文
    * | SELECT bool_or(request_time < 20)
  • クエリ結果bool_or

チェックサム関数

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

構文

checksum(x)

パラメーター

項目説明
xこのパラメーターの値は、任意のデータ型にすることができます。

戻り値のデータ型

文字列データ型のデータ。 The結果はBase64-encoded。

  • クエリ文
    * | SELECTチェックサム (request_method) AS request_method
  • クエリ結果checksum

カウント機能

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

構文

  • ログエントリの数をカウントします。
    count(*)
  • ログエントリの数をカウントします。 この関数はcount(*) 関数に相当します。
    count(1)
  • 値がnullでないxフィールドを含むログエントリの数をカウントします。
    カウント (x)

パラメーター

項目説明
xこのパラメーターの値は、任意のデータ型にすることができます。

戻り値のデータ型

整数データ型のデータ。

  • 例1: Webサイトのページビュー (PV) をカウントします。
    • クエリ文
      * | SELECTカウント (*) AS PV
    • クエリ結果count() 関数
  • Example 2: Counts数のログエントリが要求_方法フィールドその値はないヌル。
    • クエリ文
      * | SELECTカウント (request_method) AS count
    • クエリ結果count() 関数

count_if関数

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

構文

count_if( ブール式)

パラメーター

項目説明
ブール式パラメーターはブール式にすることができます。

戻り値のデータ型

整数データ型のデータ。

値がfile-0で終わるrequest_uriフィールドを持つログエントリを数えます。

  • クエリ文
    * | SELECT count_if(request_uri like '% file-0') AS count
  • クエリ結果count() 関数

geometric_mean関数

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

構文

geometric_mean(x)

パラメーター

項目説明
xパラメーターは、double、bigint、またはrealデータ型です。

戻り値のデータ型

doubleデータ型のデータ。

リクエスト時間の幾何平均を計算します。

  • クエリ文
    * | SELECT geometric_mean(request_time) AS time
  • クエリ結果geometric_mean

すべての関数

すべてのログエントリが指定された条件を満たすかどうかを確認します。 すべてのログエントリが指定された条件を満たす場合、関数はtrueを返します。 この関数は、bool_and関数に相当します。

構文

every( ブール式)

パラメーター

項目説明
ブール式パラメーターはブール式にすることができます。

戻り値のデータ型

booleanデータ型のデータ。

すべてのリクエスト時間が100秒未満かどうかを確認します。 すべてのリクエスト時間が100秒未満の場合、関数はtrueを返します。

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

尖度関数

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

構文

kurtosis(x)

パラメーター

項目説明
xパラメーターは、doubleまたはbigintデータ型にすることができます。

戻り値のデータ型

doubleデータ型のデータ。

要求時間のセットの超過尖度を計算します。

  • クエリ文
    * | SELECT尖度 (request_time)
  • クエリ結果kurtosis

map_union関数

パラメーターが指定するマップに対するユニオン操作の結果を返します。 複数のマップが同じキーを持つ場合、関数はこれらの入力マップから任意の入力マップを選択して出力マップにします。

構文

map_union(x)

パラメーター

項目説明
xパラメータは、マップデータ型とすることができる。

戻り値のデータ型

マップデータ型のデータ。

etl_contextフィールドのマップに対してユニオン操作を実行し、マップを返します。 複数の入力マップが同じキーを持つ場合、関数はこれらの入力マップから任意の入力マップを選択して出力マップにします。

  • フィールドの例
    etl_context: {
     プロジェクト: "datalab-148 **** 6461-cn-chengdu"
     logstore:"internal-etl-log"
     consumer_group:"etl-83 **** 4d1965"
     消費者: 「etl-b2d40ed **** c8d6-291294」
     shard_id:"0"}
  • クエリ文
    * | SELECT map_union(try_cast(json_parse(etl_context) AS map(varchar,varchar)))
  • クエリ結果 map_union

max関数

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

構文

  • Returns最大値。
    max(x)
  • n個の最大値を返します。
    max( xn)

パラメーター

項目説明
xこのパラメーターの値は、任意のデータ型にすることができます。
n値は正の整数でなければなりません。

戻り値のデータ型

戻り値のデータ型は、パラメーターのデータ型と同じです。

  • 例1: 最長のリクエスト期間を照会します。
    • クエリ文
      * | SELECT max(request_time) AS max_request_time
    • クエリ結果max() 関数
  • Example 2: Queriesを10最長要求持続時間。
    • クエリ文
      * | SELECT max(request_time,10) AS "top 10"
    • クエリ結果max

max_by関数

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

構文

  • y フィールドの最大値に関連付けられているxフィールドの値を照会します。
    max_by( xy)
  • x フィールドのn個の最大値に関連付けられているyフィールドの値を照会します。
    max_by( xyn)

パラメーター

項目説明
xこのパラメーターの値は、任意のデータ型にすることができます。
yこのパラメーターの値は、任意のデータ型にすることができます。
n値は正の整数でなければなりません。

戻り値のデータ型

戻り値のデータ型は、パラメーターのデータ型と同じです。

  • 例1: 最も高い値を持つ注文の時間を照会します。
    • クエリ文
      * | SELECT max_by(UsageEndTime, PretaxAmount) as time
    • クエリ結果max_by
  • 例2: 最も長いリクエスト期間を持つ3つのリクエストのリクエストメソッドを照会します。
    • クエリ文
      * | SELECT max_by(request_method,request_time,3) ASメソッド
    • クエリ結果max_by

min関数

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

構文

  • 最小値を返します。
    min(x)
  • n個の最小値を返します。 The機能リターン配列。
    min( xn)

パラメーター

項目説明
xこのパラメーターの値は、任意のデータ型にすることができます。
n値は正の整数でなければなりません。

戻り値のデータ型

戻り値のデータ型は、パラメーターのデータ型と同じです。

  • 例1: 最短リクエスト期間を照会します。
    • 例:
      * | SELECT min(request_time) AS min_request_time
    • クエリ結果min() 関数
  • 例: 10の最短リクエスト期間を照会します。
    • クエリ文
      * | SELECT min(request_time,10)
    • クエリ結果min

min_by関数

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

構文

  • y フィールドの最小値に関連付けられているxフィールドの値を照会します。
    min_by( xy)
  • x フィールドのn個の最小値に関連付けられているyフィールドの値を照会します。 The機能リターン配列。
    min_by( xyn)

パラメーター

項目説明
xこのパラメーターの値は、任意のデータ型にすることができます。
yこのパラメーターの値は、任意のデータ型にすることができます。
n値は正の整数でなければなりません。

戻り値のデータ型

戻り値のデータ型は、パラメーターのデータ型と同じです。

  • 次のクエリ文は、要求期間が最も短い要求の要求メソッドを返します。
    • クエリ文
      * | SELECT min_by(request_method,request_time) ASメソッド
    • クエリ結果min_by
  • 次のクエリステートメントは、リクエスト期間が3つの最も短いリクエスト期間であるリクエストのリクエストメソッドを返します。
    • クエリ文
      * | SELECT min_by(request_method,request_time,3) ASメソッド
    • クエリ結果max_by

歪度関数

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

構文

skewness(x)

パラメーター

項目説明
xパラメーターは、doubleまたはbigintデータ型にすることができます。

戻り値のデータ型

doubleデータ型のデータ。

リクエスト時間の歪度を計算します。

  • クエリ文
    * | SELECT歪度 (request_time) AS歪度
  • クエリ結果skewness

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
  • クエリ結果sum() 関数