🤩

Splunk - 計算済みフィールド (Calculated fields)

2025/01/13に公開

公式を参考に計算済みフィールドの使用方法について確認します。

https://docs.splunk.com/Documentation/Splunk/9.4.0/Knowledge/definecalcfields

1. 計算済みフィールド (Calculated fields)

計算済みフィールドは、search 時にイベントに追加されるフィールドで、イベントにすでに存在する2つ以上のフィールドの値を使用して計算を実行します。 evalコマンドを使用して繰り返し、長時間、または複雑な変換を実行するためのショートカットとして使用します。既存のフィールドから新しいフィールドを動的に作成する機能とも言えます。

evalコマンドを使用すると、抽出されたフィールドを使用する式を記述し、その式の評価結果の値を取得する新しいフィールドを作成することができます。

Eval式は複雑になることがあります。長い複雑なeval式を定期的に使用する必要がある場合、式を正確に再入力するのは面倒な作業になることがあります。

計算済みフィールドを使用すると、eval式でフィールドを定義することができます。検索を記述する際、eval式を切り出して、他の抽出フィールドと同様にフィールドを参照することができます。フィールドは検索時に抽出され、eval式にフィールドが含まれるイベントに追加されます。

2. 計算済みフィールドの設定方法

「設定」>「フィールド」を選択します。
「計算済みフィールド」の行で、「新規追加」をクリックすると、以下の画面が表示されます。

項目 説明
宛先App どの App に計算済みフィールドを保存するか指定します
適用先 どのデータソースに適用するか指定します
名前 計算結果の値を入れるフィールド名です
Eval 式 計算方法を指定します

3. 計算済みフィールドとsearch 時の順序

search を実行すると、Splunk ソフトウェアは複数の操作を実行してナレッジオブジェクトを生成し、検索されたイベントに適用します。Splunk ソフトウェアは次の順序で実行します。

  1. フィールドエイリアス
  2. 計算済みフィールド
  3. ルックアップ

計算済みフィールドは、すべてのタイプのフィールド抽出を参照できます。ただし、ルックアップ、イベントタイプ、タグは参照できません。これらは計算済みフィールドの後に生成されるフィールドだからです。

4. エイリアス付きソースでの計算済みフィールドの作成は未サポート

エイリアス付きのhostsource、またはsourcetypeを指定した計算済みフィールドを作成することはできません。計算済みフィールドのEval式で条件付きif eval関数を使用することで、作成することができます。

5. 既存のフィールドの上書き防止方法

計算済みフィールドが通常の方法で抽出されたフィールドと同じ名前を持つ場合、eval式が null を返す場合でも、計算済みフィールドが抽出されたフィールドを上書きします。
この上書きは、eval式と併用する coalesce関数を使用して避けることができます。coalesceは任意の数の引数を取り、null ではない値を返します。

eval式が値を返す際に、計算済みフィールドが既存のフィールドを上書きしないようにしたい場合は、以下の式を使用します。

EVAL-field = coalesce(field, <eval expression>)

eval式が null を返す際に、計算済みフィールドが既存のフィールドを上書きしないようにしたい場合は、以下の式を使用します。

EVAL-field = coalesce(<eval expression>, field)

6. 計算済みフィールドの独立性

Splunkソフトウェアが計算済みフィールドを評価する際には、他のすべてのフィールドから独立しているかのように各式を評価します。計算済みフィールドの式を連結したり、ある計算済みフィールドの評価を別の計算済みフィールドの式で使用することはできません。

Discussion