3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Splunkのevalとifの使い方(ハマって学ぶシリーズ)

Last updated at Posted at 2019-01-08

前置き

  • SPLを書いていてハマったポイントを中心に備忘録として残す
  • 2021.1.9追加

ケース1:レコード内の特定の列に”0”があった場合に、他の列の値も”0”に置き換えたい

###ポイント###

  • 値(文字、数字)の置き換えはevalと**if(又はcase)**を利用する

###元データ例###
スクリーンショット 2019-01-08 14.31.35.png

  • 上記データの赤矢印の値を"0"に置き換えたい
  • そのために条件式として、IF "ステップ(歩数)" が "0" なら、 "消費カロリー(cal)" を "0"に書き換えるとSPLで作成

###SPL例###

SPL(evalとif)
|eval summary.caloriesOut=if('summary.steps' == "0","0",'summary.caloriesOut')

###結果###

  • 無事、0に置き換えられました。
    スクリーンショット 2019-01-08 14.47.51.png

###ハマったポイント###

  • フィールド名が「summary steps」や「summary.steps」のように間にスペースが入っていたり、ドットが含まれている場合、' (シングルコーテーション)で囲わないと認識しないので要注意。サーチ時にエラーが出ないのでハマりました。evalのお作法に関して”Field names”欄に説明あり

ケース2:異なるデータ同士をつなげてるために共通フィールドをサーチ時に作成する

###ポイント###

  • 例として、"WAFアラートのuri_query"と"streamデータのuri_path"の値が同じものをまとめて表示したい
  • 新たにc_uriというフィールドをevalで作成
  • isnull条件を使うとお互いに存在しないフィールドに引っ張られるずにキレイにフィールド生成できる

###元データ例###
スクリーンショット 2021-01-09 20.37.06.png

###SPL例###

SPL(evalとif)
|eval c_uri = if(isnull(uri_path),uri_query,uri_path)

###結果###

  • c_uriが生成できました
    スクリーンショット 2021-01-09 20.39.08.png

  • あとはc_uriで集計するとWAFとstreamデータがうまくまとめて表示できます
    スクリーンショット 2021-01-09 20.43.40.png

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?