Fillmissing オペレーターのご紹介
ログデータを集計すると、Sumo Logicはデフォルトで検索結果からデータを集計しますが、データがない所は空欄にしておきます。空欄のままだと他の計算や可視化を行う時に誤解を招く可能性があります。(以下のサンプルクエリ実行結果を参照)
このような場合、Fillmissingオペレーターを使って空欄になっている(データがない)所に必要な値を入れることで上記の問題を解決できます。では、実際のサンプルクエリを見てみましょう。
■サンプルクエリ
_sourceCategory=*flare*
| where !(isNull(clientip))
| if( CacheCachestatus in ("hit", "stale", "updating", "ignored"), "Low",
if( CacheCachestatus in ("miss", "expired"), "High", "Medium")) as traffic
| count by clientip, traffic
| transpose row clientip column traffic
■サンプルクエリ実行結果
上記の例では、幾つかのCacheStatusをTrafficとしてグループ化し、それらをテーブル(Excel)形式で表示しますが、実行結果に空欄が多数あることが分かります。
それではfillmissingオペレーターを使って改善してみましょう。
■修正したクエリ
_sourceCategory=*flare*
| where !(isNull(clientip))
| if( CacheCachestatus in ("hit", "stale", "updating", "ignored"), "Low",
if( CacheCachestatus in ("miss", "expired"), "High", "Medium")) as traffic
| count by clientip, traffic
| fillmissing values all in clientip, values all in traffic
| transpose row clientip column traffic
サンプルクエリの下から2行目にクエリ構文を追加するだけです。
fillmissingオペレーターを使用すると、出力されるフィールドにジェネレーター(発生器)を定義できます。各ジェネレーターは1つのフィールドに適用され、それらの値の一部がデータに存在しない場合でも、そのフィールドに値を列挙することができます。
ジェネレーターが定義されているフィルドはキーフィールド、定義されていないフィルドは非キーフィールドと呼びます。
ジェネレーターで使用する値一覧は10,000個まで列挙可能です。上記のクエリでは値一覧の代わりに「all」を使用しています。これはクエリ結果のフィールドの値をそのまま使用する意味です。またデータがないセルの値をデフォルトの「0」から他の数字に変えることもできます。
注意点としては、fillmissingオペレーターを使う前に必ず集計(Aggregate)を行うことです。(上記の例では、count by)
■実行結果
■参考
https://help.sumologic.com/05Search/Search-Query-Language/Search-Operators/fillmissing
Please sign in to leave a comment.
Comments
0 comments