【SC-200】KQLクエリの書き方 – union編

皆さんこんにちは。国井です。
前回紹介したKQLクエリの書き方シリーズの第8弾として union 演算子を紹介します。

複数のテーブルをくっつけて表示

union演算子は複数のテーブルに格納された列をすべて表示する演算子です。
例えば、A | union B と書いたらAとBのテーブルのすべての列を返します。

SecurityEvent 
| union SecurityAlert

このクエリではSecurityEventテーブルとSecurityAlertテーブルのすべての列を出力しています。

image

ただ、この結果だけ見てもピンと来ないかもしれないので分解してみてみましょう。
こちらはSecurityEventテーブルに単純にクエリを実行した様子ですが、列にはAccountやAccountTypeなどがあることがわかりますし、
また前のクエリの結果にもAccountやAccountType列が表示されていることがわかります。

image

一方、SecurityAlertテーブルに単純にクエリを実行した様子はこちら。
こちらは列にDisplayNameやAlertNameなどがあることがわかります。

image

なので、

SecurityEvent
| union SecurityAlert
| project TimeGenerated, Account, AccountType, DisplayName, AlertName

と実行すれば、1つの結果に2つのテーブルの列が表示されていることがわかります。

image

2つのテーブルをくっつけて表示することができれば、
こんな感じで2つのテーブル全部でいくつのログが出力されたか数えることもできます。

SecurityEvent 
| union SecurityAlert  
| summarize count() 
| project count_

需要あるのか知らんけど。

テーブル以外をくっつける

union演算子はアスタリスクが使えるので、union Security* と書けばSecurityEventやSecurityAlertなどのテーブルを全部まとめてくっつけることができます。
次のクエリではSecurityxxxxx テーブルごとにログ数を数えています。

union Security* 
| summarize count() by Type

実行結果はこちら。

image

次回はjoin演算子を使ってみたいと思います。