集計命令は、ログのクエリ結果に対して統計分析、ソート、および行数制限を実行します。
stats
stats 命令は、COUNT、SUM、AVG などの SQL 集計関数と同様に、ログの統計分析を実行します。ログデータ内の特定のフィールドをグループ化して集計します。
-
この命令は、Logstore でのクエリと分析にのみ使用されます。データ変換、構造化プロセス言語 (SPL) ルール消費、Ingest Processors、または Logtail 設定などのシナリオには適用されません。
-
デフォルトでは、stats 命令は最初の 100 件の集計結果を返します。より多くの結果を返すには、limit 命令を使用してください。
構文
stats <output>=<aggOperator> by <group>,[<group>...]
パラメータ
|
パラメータ |
タイプ |
必須 |
説明 |
|
output |
String |
はい |
統計結果フィールドのエイリアスを指定します。 |
|
aggOperator |
SQLExp |
はい |
次の集計関数がサポートされています。
|
|
group |
String |
いいえ |
集計のディメンションを指定します。これは SQL の GROUP BY フィールドと同様です。 |
例
-
例 1:
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アドレスの最小/最大レイテンシを計算します。-
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: 10 ip: 192.168.1.1 minLatencyMs: 10 maxLatencyMs: 20
-
-
例 3: アクセスログの合計
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
ソート命令は、フィールド値または統計結果に基づいて、クエリ結果を昇順 (asc) または降順 (desc) で並べ替えます。
この命令は、Logstore でのクエリと分析にのみ使用されます。データ変換、SPL ルール消費、Ingest Processors、または 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 命令は、クエリ結果として返されるログの行数を制限し、過度に大きな結果セットによるパフォーマンスの問題を防ぎます。
-
この命令は、Logstore でのクエリと分析にのみ使用されます。データ変換、SPL ルール消費、Ingest Processors、または Logtail 設定などのシナリオには適用されません。
-
sort 命令を使用して照合順序を指定しない場合、limit 命令の出力はランダムな順序になります。これは、保存時にログの自然順が保証されないためです。
構文
limit (<offset>,) <size>
パラメータ
|
パラメータ |
タイプ |
必須 |
説明 |
|
offset |
Integer |
いいえ |
最初の |
|
size |
Integer |
はい |
返される行数の上限。 |
例
アクセスログを latencyMs フィールドでソートし、最初の 1 行を取得します。
-
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: 10