皆さんこんにちは。国井です。
前回紹介したKQLクエリの書き方シリーズの第8弾として union 演算子を紹介します。
複数のテーブルをくっつけて表示
union演算子は複数のテーブルに格納された列をすべて表示する演算子です。
例えば、A | union B と書いたらAとBのテーブルのすべての列を返します。
SecurityEvent
| union SecurityAlert
このクエリではSecurityEventテーブルとSecurityAlertテーブルのすべての列を出力しています。
ただ、この結果だけ見てもピンと来ないかもしれないので分解してみてみましょう。
こちらはSecurityEventテーブルに単純にクエリを実行した様子ですが、列にはAccountやAccountTypeなどがあることがわかりますし、
また前のクエリの結果にもAccountやAccountType列が表示されていることがわかります。
一方、SecurityAlertテーブルに単純にクエリを実行した様子はこちら。
こちらは列にDisplayNameやAlertNameなどがあることがわかります。
なので、
SecurityEvent
| union SecurityAlert
| project TimeGenerated, Account, AccountType, DisplayName, AlertName
と実行すれば、1つの結果に2つのテーブルの列が表示されていることがわかります。
2つのテーブルをくっつけて表示することができれば、
こんな感じで2つのテーブル全部でいくつのログが出力されたか数えることもできます。
SecurityEvent | union SecurityAlert | summarize count() | project count_
需要あるのか知らんけど。
テーブル以外をくっつける
union演算子はアスタリスクが使えるので、union Security* と書けばSecurityEventやSecurityAlertなどのテーブルを全部まとめてくっつけることができます。
次のクエリではSecurityxxxxx テーブルごとにログ数を数えています。
union Security* | summarize count() by Type
実行結果はこちら。
次回はjoin演算子を使ってみたいと思います。