日本語版SPL Example用
cf. fillnull
説明
null値を指定された値に置き換えます。
null値は、特定の結果では欠落しているが別の結果では存在するフィールド値です。
fillnullを使用して、nullフィールド値を文字列で置き換えます。
フィールドリストを指定しない場合、fillnullはすべてのnull値を0(デフォルト)またはユーザー指定の文字列に置き換えます。
特定の結果では欠落しているが別の結果では存在するフィールド値
| eval baz=coalesce(foo,bar) を使う時ですね。
fillnull.spl
index=_internal
| fillnull component value="NA"
componentのフィールドを確認するとcomponentフィールドがなかったイベントにもフィールドが作成されて、この場合_NA_が入力される。
記述
fillnull [value=string] [<field-list>]
オプション引数
| value | field-list |
|---|---|
| 文字列 デフォルトは0 |
値を入れるフィールド |
例1
fillnull1.spl
| makeresults
| eval a=""
| table a,b,c,d
| fillnull a b c d
結果
| a | b | c | d |
|---|---|---|---|
| 0 | 0 | 0 | |
nullと値がないを表してみた。 |
例2
fillnull2.spl
| makeresults
| eval a=""
| eval b=null(), c=""
| fillnull a b c d
結果
| a | b | c | d |
|---|---|---|---|
| 0 | 0 | ||
明示的にnullにしてあげなきゃいけないと言う例 |
null除外.spl
| makeresults
| eval a=""
| eval b=null(), c=""
| fillnull a b c d
| foreach * [ eval <<FIELD>> = nullif(<<FIELD>>,"")]
| fillnull
全部nullにしてしまえばこの通りしっかり動きます。
例3
fillnull3.spl
| makeresults
| fillnull a b c d
結果
| a | b | c | d |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
何はともあれフィールドを作りたい時はfillnullが一番早い |
まとめ
nullはSplunkにおいて非常にわかりづらい。
where isnull()が期待通りの動きをしなかったりする場合| fillnullで確認してみるとただの値がないだけかもしれません。
![]()
fillnullの話で終わっていない。