集計関数は、フィールドの値を計算し、単一の値を返します。 このトピックでは、集計関数の構文について説明します。 このトピックでは、集計関数の使用方法の例も示します。
次の表に、Log Serviceでサポートされている集計機能を示します。
機能 | 構文 | 説明 |
---|---|---|
任意関数 | 任意 (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( 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) | Queriesをn最小値のxフィールド。 The機能リターン配列。 | |
min_by関数 | min_by( x 、y) | y フィールドの最小値に関連付けられているxの値を照会します。 |
min_by( x 、y、n) | 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データ型のデータ。
例
- クエリ文
メソッド: PostLogstoreLogs | SELECT avg(latency) AS avg_latency, Project GROUP BY Project HAVING avg_latency > 1000
- クエリ結果
bitwise_and_agg関数
x フィールドの値に対するビット単位のAND演算の結果を返します。
構文
bitwise_and_agg(x)
パラメーター
項目 | 説明 |
---|---|
x | パラメーターは、bigintデータ型にすることができます。 |
戻り値のデータ型
bigintデータ型のデータ。 結果はバイナリを表します。
例
request_timeフィールドの値に対するビット単位のAND演算の結果を返します。
- クエリ文
* | SELECT bitwise_and_agg (ステータス)
- クエリ結果
bitwise_or_agg関数
x フィールドの値に対するビット単位のOR演算の結果を返します。
構文
bitwise_or_agg(x)
パラメーター
項目 | 説明 |
---|---|
x | パラメーターは、bigintデータ型にすることができます。 |
戻り値のデータ型
bigintデータ型のデータ。 結果はバイナリを表します。
例
- クエリ文
* | SELECT bitwise_or_agg(request_length)
- クエリ結果
bool_and関数
すべてのログエントリが指定された条件を満たすかどうかを確認します。 すべてのログエントリが指定された条件を満たす場合、関数はtrueを返します。 This機能すべての機能と同等である。
構文
bool_and( ブール式)
パラメーター
項目 | 説明 |
---|---|
ブール式 | パラメーターはブール式にすることができます。 |
戻り値のデータ型
booleanデータ型のデータ。
例
すべてのログエントリでrequest_timeフィールドの値が100未満かどうかを確認します。 単位は秒です。 すべてのログエントリでrequest_timeフィールドの値が100未満の場合、関数はtrueを返します。
- クエリ文
* | SELECT bool_and(request_time < 100)
- クエリ結果
bool_or関数
指定された条件を満たすログエントリが存在するかどうかを確認します。 指定された条件を満たすログエントリが存在する場合、関数はtrueを返します。
構文
bool_or( ブール式)
パラメーター
項目 | 説明 |
---|---|
ブール式 | パラメーターはブール式にすることができます。 |
戻り値のデータ型
ブール型のデータ。
例
request_timeフィールドの値が20未満のログエントリが存在するかどうかを確認します。 単位は秒です。 request_timeフィールドの値が20未満のログエントリが存在する場合、関数はtrueを返します。
- クエリ文
* | SELECT bool_or(request_time < 20)
- クエリ結果
チェックサム関数
x フィールドの値のチェックサムを計算します。
構文
checksum(x)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は、任意のデータ型にすることができます。 |
戻り値のデータ型
文字列データ型のデータ。 The結果はBase64-encoded。
例
- クエリ文
* | SELECTチェックサム (request_method) AS request_method
- クエリ結果
カウント機能
ログエントリの数をカウントします。
構文
- ログエントリの数をカウントします。
count(*)
- ログエントリの数をカウントします。 この関数は
count(*)
関数に相当します。count(1)
- 値がnullでないxフィールドを含むログエントリの数をカウントします。
カウント (x)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は、任意のデータ型にすることができます。 |
戻り値のデータ型
整数データ型のデータ。
例
- 例1: Webサイトのページビュー (PV) をカウントします。
- クエリ文
* | SELECTカウント (*) AS PV
- クエリ結果
- クエリ文
- Example 2: Counts数のログエントリが要求_方法フィールドその値はないヌル。
- クエリ文
* | SELECTカウント (request_method) AS count
- クエリ結果
- クエリ文
count_if関数
指定された条件を満たすログエントリの数をカウントします。
構文
count_if( ブール式)
パラメーター
項目 | 説明 |
---|---|
ブール式 | パラメーターはブール式にすることができます。 |
戻り値のデータ型
整数データ型のデータ。
例
値がfile-0
で終わるrequest_uriフィールドを持つログエントリを数えます。
- クエリ文
* | SELECT count_if(request_uri like '% file-0') AS count
- クエリ結果
geometric_mean関数
x フィールドの値の幾何平均を計算します。
構文
geometric_mean(x)
パラメーター
項目 | 説明 |
---|---|
x | パラメーターは、double、bigint、またはrealデータ型です。 |
戻り値のデータ型
doubleデータ型のデータ。
例
リクエスト時間の幾何平均を計算します。
- クエリ文
* | SELECT geometric_mean(request_time) AS time
- クエリ結果
すべての関数
すべてのログエントリが指定された条件を満たすかどうかを確認します。 すべてのログエントリが指定された条件を満たす場合、関数はtrueを返します。 この関数は、bool_and関数に相当します。
構文
every( ブール式)
パラメーター
項目 | 説明 |
---|---|
ブール式 | パラメーターはブール式にすることができます。 |
戻り値のデータ型
booleanデータ型のデータ。
例
すべてのリクエスト時間が100秒未満かどうかを確認します。 すべてのリクエスト時間が100秒未満の場合、関数はtrueを返します。
- クエリ文
* | SELECT every(request_time < 100)
- クエリ結果
尖度関数
x フィールドの値の過剰尖度を計算します。
構文
kurtosis(x)
パラメーター
項目 | 説明 |
---|---|
x | パラメーターは、doubleまたはbigintデータ型にすることができます。 |
戻り値のデータ型
doubleデータ型のデータ。
例
要求時間のセットの超過尖度を計算します。
- クエリ文
* | SELECT尖度 (request_time)
- クエリ結果
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)))
- クエリ結果
max関数
x フィールドの最大値を照会します。
構文
- Returns最大値。
max(x)
- n個の最大値を返します。
max( x 、n)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は、任意のデータ型にすることができます。 |
n | 値は正の整数でなければなりません。 |
戻り値のデータ型
戻り値のデータ型は、パラメーターのデータ型と同じです。
例
- 例1: 最長のリクエスト期間を照会します。
- クエリ文
* | SELECT max(request_time) AS max_request_time
- クエリ結果
- クエリ文
- Example 2: Queriesを10最長要求持続時間。
- クエリ文
* | SELECT max(request_time,10) AS "top 10"
- クエリ結果
- クエリ文
max_by関数
次のリストは、max_by関数でサポートされている構文を示しています。
構文
- y フィールドの最大値に関連付けられているxフィールドの値を照会します。
max_by( x 、y)
- x フィールドのn個の最大値に関連付けられているyフィールドの値を照会します。
max_by( x 、y、n)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は、任意のデータ型にすることができます。 |
y | このパラメーターの値は、任意のデータ型にすることができます。 |
n | 値は正の整数でなければなりません。 |
戻り値のデータ型
戻り値のデータ型は、パラメーターのデータ型と同じです。
例
- 例1: 最も高い値を持つ注文の時間を照会します。
- クエリ文
* | SELECT max_by(UsageEndTime, PretaxAmount) as time
- クエリ結果
- クエリ文
- 例2: 最も長いリクエスト期間を持つ3つのリクエストのリクエストメソッドを照会します。
- クエリ文
* | SELECT max_by(request_method,request_time,3) ASメソッド
- クエリ結果
- クエリ文
min関数
x フィールドの最小値を照会します。
構文
- 最小値を返します。
min(x)
- n個の最小値を返します。 The機能リターン配列。
min( x 、n)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は、任意のデータ型にすることができます。 |
n | 値は正の整数でなければなりません。 |
戻り値のデータ型
戻り値のデータ型は、パラメーターのデータ型と同じです。
例
- 例1: 最短リクエスト期間を照会します。
- 例:
* | SELECT min(request_time) AS min_request_time
- クエリ結果
- 例:
- 例: 10の最短リクエスト期間を照会します。
- クエリ文
* | SELECT min(request_time,10)
- クエリ結果
- クエリ文
min_by関数
次のリストは、min_by関数でサポートされている構文を示しています。
構文
- y フィールドの最小値に関連付けられているxフィールドの値を照会します。
min_by( x 、y)
- x フィールドのn個の最小値に関連付けられているyフィールドの値を照会します。 The機能リターン配列。
min_by( x 、y、n)
パラメーター
項目 | 説明 |
---|---|
x | このパラメーターの値は、任意のデータ型にすることができます。 |
y | このパラメーターの値は、任意のデータ型にすることができます。 |
n | 値は正の整数でなければなりません。 |
戻り値のデータ型
戻り値のデータ型は、パラメーターのデータ型と同じです。
例
- 次のクエリ文は、要求期間が最も短い要求の要求メソッドを返します。
- クエリ文
* | SELECT min_by(request_method,request_time) ASメソッド
- クエリ結果
- クエリ文
- 次のクエリステートメントは、リクエスト期間が3つの最も短いリクエスト期間であるリクエストのリクエストメソッドを返します。
- クエリ文
* | SELECT min_by(request_method,request_time,3) ASメソッド
- クエリ結果
- クエリ文
歪度関数
x フィールドの値の歪度を計算します。
構文
skewness(x)
パラメーター
項目 | 説明 |
---|---|
x | パラメーターは、doubleまたはbigintデータ型にすることができます。 |
戻り値のデータ型
doubleデータ型のデータ。
例
リクエスト時間の歪度を計算します。
- クエリ文
* | SELECT歪度 (request_time) AS歪度
- クエリ結果
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
- クエリ結果