集計演算子
構文
T | summarize [SummarizeParameters] [[ Column =] Aggregation [, ...]] [ by [ Column =] GroupExpression [, ...]]
引数
- 列: 結果列のオプションの名前。 デフォルトは、式から派生した名前です。
- 集約: 引数として列名を使用した、
count()またはavg()などの 集約関数 の呼び出し。 集約関数のリストを参照してください。 - GroupExpression: 入力データを参照することができるスカラー式。 出力には、すべてのグループ式の個別の値と同数のレコードが含まれます。
- SummarizeParameters: 動作を制御する、 Name
=Value 形式のゼロ個以上 (スペース区切り) のパラメーター。 以下のパラメーターがサポートされます。
注
入力表が空の場合、出力は GroupExpression が使用されているかどうかによって異なります。
- GroupExpression が指定されていない場合、出力は単一の (空の) 行になります。
- GroupExpression が指定されている場合、出力には行がありません。
返品
入力行は、 by 式と同じ値を持つグループに配置されます。 次に、指定された集約関数がグループごとに計算され、グループごとに行が生成されます。 結果には、 by 列と、計算された集約ごとに少なくとも 1 つの列が含まれます。 (一部の集約関数は複数の列を返します。)
結果には、 by 値の明確な組み合わせ (ゼロの場合もあります) と同数の行が含まれます。 グループ・キーが指定されていない場合、結果のレコードは 1 つになります。
数値の範囲を集計するには、 bin() を使用して範囲を離散値に減らします。
注
- 集約式とグループ化式の両方に任意の式を指定できますが、単純な列名を使用するか、
bin()を数値列に適用する方が効率的です。
集約関数のリスト
| 関数 | 説明 |
|---|---|
| 引数最大値 () | 引数が最大化されている場合に 1 つ以上の式を戻す |
| 引数最小 () | 引数が最小化されている場合は、1 つ以上の式を戻します。 |
| 平均 () | グループ全体の平均値を返します。 |
| avgif () (avgif ()) | グループ全体の平均値を戻します (述部あり) |
| バイナリーすべて (binary_all_and) | グループのバイナリー AND を使用して集約値を返します。 |
| バイナリーすべて (binary_all_or) | グループのバイナリー OR を使用して集約値を返します。 |
| binary_all_xor | グループのバイナリー XOR を使用して集約値を返します。 |
| カウント () | グループのカウントを戻します。 |
| カウント () (countif ()) | グループの述部を持つカウントを戻します。 |
| dcount () (dcount ()) | グループ・エレメントのおおよその個別カウントを戻します。 |
| dcountif () (dcountif ()) | グループ・エレメント (述部あり) のおおよその特殊カウントを戻します。 |
| make_list () | グループ内のすべての値のリストを返します。 |
| make_list_if () (make_list_if ()) | グループ内のすべての値のリストを戻します (述部あり) |
| make_set () | グループ内の個別値のセットを戻します。 |
| make_set_if () (make_set_if ()) | グループ内の特殊値のセットを戻します (述部あり) |
| 最大 () | グループ全体の最大値を戻します。 |
| 最大値 () | グループ全体の最大値を戻します (述部あり) |
| 最小 () | グループ全体の最小値を返します。 |
| ミニ () | グループ全体の最小値を戻します (述部あり) |
| 合計 () | グループ内のエレメントの合計を戻します。 |
| 要約 () | グループ内のエレメントの合計を戻します (述部あり) |
| すべて実行 (take_any) () | グループの空でないランダム値を返します。 |
| take_anyif () (take_anyif ()) | グループの空でないランダム値を戻します (述部あり) |
集約のデフォルト値
以下の表に、集約のデフォルト値を要約します。
| オペレーター | デフォルト値 |
|---|---|
count(), countif(), dcount(), dcountif() |
0 |
make_bag(), make_bag_if(), make_list(), make_list_if(), make_set(), make_set_if() |
空の動的配列 ([]) |
| その他すべて | null |
ヌル値を含むエンティティーに対してこれらの集約を使用すると、ヌル値は無視され、計算には関与しません (以下の例を参照してください)。
例
この例では、単に events テーブル内のすべてのイベントをカウントします。
events
| project original_time
| where original_time > ago(24h)
| summarize NumEvents=count()
結果
NumEvents |
|---|
4163038 |
次の例
この例では、 24hr 期間に分割された過去 24 時間のイベントの総数が返されます。
events
| project original_time
| where original_time > ago(24h)
| summarize NumEvents=count() by HourBucket=bin(original_time, 60m)
| sort by HourBucket desc
| take 5
結果
HourBucket |
NumEvents |
|---|---|
2022-06-12 23:00:00.000 |
8374746 |
2022-06-12 22:00:00.000 |
8214746 |
2022-06-12 21:00:00.000 |
7374746 |
2022-06-12 20:00:00.000 |
9938733 |
2022-06-12 19:00:00.000 |
0 |
2022-06-12 18:00:00.000 |
1 |
過去 24 時間について、1 時間間隔ごとに取り込まれたイベントの数を示す表。 表には 2 つの列が含まれます。 EventCount これは 1 時間のイベントのカウントであり、 HourBucket はイベントの集約の時間枠に分割されます。
固有の組み合わせ
表に存在するイベント name と severity の固有の組み合わせを判別します。 集約関数はなく、グループ化キーのみです。 出力には、これらの結果の列のみが表示されます。
events
| project severity, name, original_time
| where original_time > ago(24h)
| where severity > 6
| summarize by name, severity
| sort by name asc, severity desc
| take 5
結果
name |
severity |
|---|---|
(Primary) Failover cable OK |
10 |
(Primary) Failover cable Not OK |
6 |
(Primary) Failover message block alloc failed |
7 |
30419 Internet Explorer 8 XSS Attack |
8 |
A fatal alert was generated and sent to the remote endpoint |
7 |
最小タイム・スタンプと最大タイム・スタンプ
events 表内のすべてのイベントの最小タイム・スタンプと最大タイム・スタンプを検索します。 group-by 節がないため、出力には 1 行のみが含まれます。
events
| project severity, original_time
| where original_time > ago(24h)
| where severity > 6
| summarize MinTime=min(original_time), MaxTime=max(original_time)
結果
Min |
Max |
|---|---|
1975-06-09 09:21:45 |
2015-12-24 23:45:00 |
DISTINCT COUNT
nameごとに行を作成し、取り込まれたイベントの src_ip 個別の数を表示します。
events
| project name, severity, original_time, src_ip
| where original_time > ago(24h)
| where severity > 6 and isnotempty(name) and isnotempty(src_ip)
| summarize SrcIpCount=count_distinct(src_ip) by Name=name
| order by SrcIpCount desc
| take 5
結果
| 名前 | SrcIpカウント |
|---|---|
| グループ・ポリシーの処理が失敗しました | 385 |
| コンテンツ保護違反 | 367 |
| Web サーバー適用違反 | 312 |
| Openfire Jabber サーバー認証バイパス | 305 |
| プロトコル・リバース・パス検査の拒否 | 290 |