splunk

Splunkコマンド 「eventstats」

更新日:

特定項目の割合(%)を計算する際に、eventstatsを知らなくてsubsearchを使った面倒なコーディングをしてしまっていたので、eventstatsの使い方をシェアします。

コーディング

サンプルデータソース

データソースは、日本郵便が配布している住所CDマスタです。

stats

例えば都道府県・市区町村ごとの住所CD件数は以下のようにsearchします。
(sourcetype「adressJapanCSV」で住所CDマスタをsplunkに取り込んでいます)

sourcetype="adressJapanCSV"
| stats count(住所CD) as count by 都道府県,市区町村

by区で指定した単位で集計された合計件数が出力されます。

eventstats

さらに、都道府県ごとの市区町村の割合を算出したいときにeventstatsを使用します。

sourcetype="adressJapanCSV"
| stats count(住所CD) as count by 都道府県,市区町村
| eventstats sum(count) as total by 都道府県

totalカラムに都道府県ごとの合計が出力されます。

このように、eventstatsは、by区で指定した単位で集約せずに、statsした結果を取得できます。

あとは、割合(%)をevalで計算すれば完了です。

sourcetype="adressJapanCSV"
| stats count(住所CD) as count by 都道府県,市区町村
| eventstats sum(count) as total by 都道府県
| eval percent = round(count / total * 100,2)

ダメな例

ちなみに、subsearchを使った非効率なコーディングは下記です。
subsearchは処理効率も悪く、検索数に上限が設定されていたりするので、できるだけ使わないようにしたほうが良いです。

sourcetype="adressJapanCSV"
| stats count(住所CD) as count by 都道府県,市区町村
| join 都道府県
[search sourcetype="adressJapanCSV" 
 | stats count(住所CD) as total by 都道府県]
| eval percent = round(count / total * 100,2)

まとめ

search文を書いていると、集約せずに集計したいことが結構あるので、eventstatsは重要なコマンドですね。







-splunk
-

Copyright© Tech Log , 2020 All Rights Reserved Powered by STINGER.