このトピックでは、集約命令の使用方法について説明し、例を示します。
stats
stats 命令は、ログの統計分析に使用します。これは、COUNT、SUM、AVG などの SQL の集計関数に似ています。ログデータ内の特定のフィールドに対して、統計、グループ化、および集約操作を実行します。
この命令は、Log Service でのクエリ分析にのみ使用されます。データ変換、構造化プロセス言語 (SPL) ルール消費、書き込みプロセッサ、Logtail 構成などのシナリオには適用されません。
デフォルトでは、stats 命令は最初の 100 件の集約結果を返します。より多くの結果を返すには、limit 命令を使用します。
構文
stats <output>=<aggOperator> by <group>,[<group>...]パラメーター
パラメーター | タイプ | 必須 | 説明 |
output | String | はい | 統計結果フィールドのエイリアスを指定します。 |
aggOperator | SQLExp | はい | 次の集計関数がサポートされています:
|
group | String | いいえ | 集約のディメンションを指定します。これは SQL の GROUP BY フィールドに似ています。 |
例
ipごとにアクセスログのpvを計算します。SPL 文
* | stats pv=count(*) by ip入力データ
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10出力データ
ip: 192.168.1.2 pv: 1 ip: 192.168.1.1 pv: 2
例 2:
accesslogにあるすべてのipアドレスのmin/maxレイテンシーを計算します。SPL 文
* | extend latencyMs=cast(latencyMs as bigint) | stats minLatencyMs=min(latencyMs), maxLatencyMs=max(latencyMs) by ip入力データ
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10出力データ
ip: 192.168.1.2 minLatencyMs: 10 maxLatencyMs: 20 ip: 192.168.1.1 minLatencyMs: 10 maxLatencyMs: 10
アクセスログ内の合計
pvを計算します。SPL 文
* | stats pv=count(*)入力データ
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 10出力データ
pv: 3
sort
sort 命令はクエリ結果をソートします。フィールド値または統計結果を昇順 (asc) または降順 (desc) でソートできます。これは、主要なデータをすばやく見つけて順序付けられたレポートを生成するのに役立つ、ログ分析の重要なツールです。
この命令は、Log Service でのクエリ分析にのみ使用されます。データ変換、SPL ルール消費、書き込みプロセッサ、Logtail 構成などのシナリオには適用されません。
構文
sort <field> [asc/desc] ,(<field> [asc/desc])パラメーター
パラメーター | タイプ | 必須 | 説明 |
field | String | はい | ソートするフィールドを指定します。次のフィールドタイプがサポートされています:
|
asc/desc | String | いいえ |
|
例
accesslog を latencyMs でソートします。
SPL 文
* | extend latencyMs=cast(latencyMs as bigint) | sort latencyMs desc入力データ
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15出力データ
ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15 ip: 192.168.1.1 latencyMs: 10
limit
limit 命令は、クエリ結果で返されるログ行の数を制限します。これは、データ量をコントロールするためのコア命令です。limit を使用すると、クエリ結果が大きすぎることによるパフォーマンスの問題やリソースの浪費を防ぐことができます。ログ分析やリアルタイムモニタリングなど、さまざまなシナリオに適しています。
この命令は、Log Service でのクエリ分析にのみ使用されます。データ変換、SPL ルール消費、書き込みプロセッサ、Logtail 構成などのシナリオには適用されません。
sort 命令を使用して照合順序を指定しない場合、limit 命令の出力はランダムな順序になります。これは、ストレージ中にログの自然な順序が保証されないためです。
構文
limit (<offset>,) <size>パラメーター
パラメーター | タイプ | 必須 | 説明 |
offset | Integer | いいえ | 最初の |
size | Integer | はい | 行の制限。 |
例
アクセスログを latencyMs フィールドでソートし、最初の行を取得します。
SPL 文
* | extend latencyMs=cast(latencyMs as bigint) | sort latencyMs | limit 1入力データ
ip: 192.168.1.1 latencyMs: 10 ip: 192.168.1.1 latencyMs: 20 ip: 192.168.1.2 latencyMs: 15出力データ
ip: 192.168.1.1 latencyMs: 20