集計関数は、フィールドの値を計算し、単一の値を返します。 このトピックでは、集計関数の構文について説明します。 このトピックでは、関数の使用方法の例も示します。
次の表に、Simple Log Serviceでサポートされている集計機能を示します。
分析ステートメントで文字列を使用する場合は、文字列を単一引用符 (')で囲む必要があります。 二重引用符 (") で囲まれていない、または囲まれている文字列は、フィールド名または列名を示します。 例えば、 'status' はステータスの文字列を示し、status または "status" はステータスログフィールドを示します。
関数 | 構文 | 説明 | SQLでサポート | SPLでサポート |
任意 (x) | xフィールドのランダムなnull以外の値を返します。 | √ | × | |
avg( x) | xフィールドの値の平均を計算します。 | √ | × | |
bitwise_and_agg( x) | xフィールドの値に対するビット単位のAND演算の結果を返します。 | √ | × | |
bitwise_or_agg( x) | xフィールドの値に対するビット単位のOR演算の結果を返します。 | √ | × | |
bool_and( ブール式) | すべてのログが指定された条件を満たすかどうかを確認します。 はいの場合、関数はtrueを返します。 この関数はすべての関数に相当します。 | √ | × | |
bool_or( ブール式) | 指定した条件を満たすログが存在するかどうかを確認します。 はいの場合、関数はtrueを返します。 | √ | × | |
checksum( x) | xフィールドの値のチェックサムを計算します。 | √ | × | |
count(*) | ログの数をカウントします。 | √ | × | |
count(1) | ログの数をカウントします。 この関数は、count(*) 関数に相当します。 | √ | × | |
カウント (x) | xフィールドの値がNULLでないログの数をカウントします。 | √ | × | |
count_if( ブール式) | 指定された条件を満たすログの数をカウントします。 | √ | × | |
every( ブール式) | すべてのログが指定された条件を満たすかどうかを確認します。 はいの場合、関数はtrueを返します。 この関数は、bool_and関数に相当します。 | √ | × | |
geometric_mean( x) | xフィールドの値の幾何平均を計算します。 | √ | × | |
尖度 (x) | xフィールドの値の尖度を計算します。 | √ | × | |
map_union( x) | 指定されたマップに対するユニオン演算の結果を返します。 複数の入力マップにキーが存在する場合、関数はキーの値の1つをランダムに返します。 | √ | × | |
max( x) | xフィールドの最大値を照会します。 | √ | × | |
max( x, n) | xフィールドのn個の最大値を照会します。 関数は配列を返します。 | √ | × | |
max_by( x, y) | yフィールドの最大値に関連付けられているxの値を照会します。 | √ | × | |
max_by( x, y, n) | yフィールドのn個の最大値に関連付けられているxの値を照会します。 関数は配列を返します。 | √ | × | |
min( x) | xフィールドの最小値を照会します。 | √ | × | |
min( x, n) | xフィールドのn個の最小値を照会します。 関数は配列を返します。 | √ | × | |
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
クエリと分析結果
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
クエリと分析結果
bitwise_and_agg関数
bitwise_and_agg関数は、xフィールドの値に対するビット単位のAND演算の結果を返します。
構文
bitwise_and_agg(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はbigint型です。 |
戻り値のデータ型
バイナリ表現のbigint型。
例
request_time
フィールドの値に対するビット単位のAND演算の結果を返します。
クエリ文 (デバッグ)
* | SELECT bitwise_and_agg(status)
クエリと分析結果
bitwise_or_agg関数
bitwise_or_agg関数は、xフィールドの値に対するビット単位のOR演算の結果を返します。
構文
bitwise_or_agg(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はbigint型です。 |
戻り値のデータ型
バイナリ表現のbigint型。
例
request_time
フィールドの値に対するビット単位のOR演算の結果を返します。
クエリ文 (デバッグ)
* | SELECT bitwise_or_agg(request_length)
クエリと分析結果
bool_and関数
bool_and関数は、すべてのログが指定された条件を満たすかどうかをチェックします。 はいの場合、関数はtrueを返します。 この関数はすべての関数に相当します。
構文
bool_and(boolean expression)
Parameters
パラメーター | 説明 |
ブール式 | このパラメーターの値はブール式です。 |
戻り値タイプ
ブール型。
例
すべてのログでrequest_timeフィールドの値が100未満かどうかを確認します。 単位は秒です。 はいの場合、関数はtrueを返します。
クエリ文 (デバッグ)
* | SELECT bool_and(request_time < 100)
クエリと分析結果
bool_or関数
bool_or関数は、指定された条件を満たすログが存在するかどうかをチェックします。 はいの場合、関数はtrueを返します。
構文
bool_or(boolean expression)
パラメーター
パラメーター | 説明 |
ブール式 | このパラメーターの値はブール式です。 |
戻り値タイプ
ブール型。
例
request_timeフィールドの値が20未満のログが存在するかどうかを確認します。 単位は秒です。 はいの場合、関数はtrueを返します。
クエリ文 (デバッグ)
* | SELECT bool_or(request_time < 20)
クエリと分析結果
チェックサム関数
チェックサム関数は、xフィールドの値のチェックサムを計算します。
構文
checksum(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は任意のデータ型です。 |
戻り値のデータ型
文字列型。 結果はBase64-encodedです。
例
クエリ文 (デバッグ)
* | SELECT checksum(request_method) AS request_method
クエリと分析結果
カウント機能
カウント機能はログの数をカウントします。
構文
次の構文を使用する場合、この関数はログの数をカウントします。
count(*)
次の構文を使用する場合、関数はログの数をカウントします。これは
count(*)
に相当します。count(1)
次の構文を使用すると、xフィールドの値がNULLでないログの数がカウントされます。
count(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は任意のデータ型です。 |
戻り値のデータ型
整数型。
例
count_if関数
count_if関数は、指定された条件を満たすログの数をカウントします。
構文
count_if(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型です。 |
戻り値のデータ型
ダブルタイプ。
例
request_timeフィールドの値の幾何平均を計算します。
クエリ文 (デバッグ)
* | SELECT geometric_mean(request_time) AS time
クエリと分析結果
すべての関数
すべてのログが指定された条件を満たすかどうかをチェックします。 はいの場合、関数はtrueを返します。 この関数は、bool_and関数に相当します。
構文
every(boolean expression)
パラメーター
パラメーター | 説明 |
ブール式 | このパラメーターの値はブール式です。 |
戻り値のデータ型
ブール型。
例
すべてのログでrequest_timeフィールドの値が100未満かどうかを確認します。 単位は秒です。 はいの場合、関数はtrueを返します。
クエリ文 (デバッグ)
* | SELECT every(request_time < 100)
クエリと分析結果
尖度関数
尖度関数は、x場の値の尖度を計算する。
構文
kurtosis(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はdouble型またはbigint型です。 |
戻り値のデータ型
ダブルタイプ。
例
request_timeフィールドの値の尖度を計算します。
クエリ文 (デバッグ)
*| SELECT kurtosis(request_time)
クエリと分析結果
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)) )
クエリと分析結果
max関数
max関数は、xフィールドの最大値を照会します。
構文
次の構文を使用すると、関数はxフィールドの最大値を照会します。
max(x)
次の構文を使用すると、関数はxフィールドのn個の最大値を照会します。 関数は配列を返します。
max(x, n)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は任意のデータ型です。 |
n | このパラメータの値は正の整数です。 |
戻り値のデータ型
パラメーター値のデータ型と同じです。
例
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
クエリと分析結果
例2: request_timeフィールドの3つの最大値を持つリクエストのリクエストメソッドを照会します。
クエリ文 (デバッグ)
* | SELECT max_by(request_method, request_time, 3) AS method
クエリと分析結果
min関数
min関数は、xフィールドの最小値を照会します。
構文
次の構文を使用すると、関数はxフィールドの最小値を照会します。
min(x)
次の構文を使用すると、関数はxフィールドのn個の最小値を照会します。 関数は配列を返します。
min(x,n)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は任意のデータ型です。 |
n | このパラメータの値は正の整数です。 |
戻り値のデータ型
パラメーター値のデータ型と同じです。
例
min_by関数
次のリストは、min_by関数でサポートされている構文を示しています。
構文
次の構文を使用すると、関数はyフィールドの最小値に関連付けられているxの値を照会します。
min_by(x, y)
次の構文を使用すると、関数はyフィールドのn個の最小値に関連付けられているxの値を照会します。 関数は配列を返します。
min_by(x, y, n)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値は任意のデータ型です。 |
y | このパラメーターの値は任意のデータ型です。 |
n | このパラメーターの値は0より大きい整数です。 |
戻り値のデータ型
パラメーター値のデータ型と同じです。
例
歪度関数
歪度関数は、xフィールドの値の歪度を計算する。
構文
skewness(x)
パラメーター
パラメーター | 説明 |
x | このパラメーターの値はdouble型またはbigint型です。 |
戻り値のデータ型
ダブルタイプ。
例
request_timeフィールドの値の歪度を計算します。
クエリ文 (デバッグ)
*| SELECT skewness(request_time) AS 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
クエリと分析結果