0
2

More than 1 year has passed since last update.

Splunk: tonumber関数とtostring関数の使い方

Posted at
実施環境: Splunk Free 8.2.2

0. 概要

Splunk の評価関数には tonumber 関数と tostring 関数の2つの関数が存在します。
名前的には変数の型を数値や文字列に変換するもののようですが、実はそうではありません。
今回はそんな2つの関数について解説していきます。

1. Splunk における変数型

そもそも、 Splunk において変数の型は Splunk 側である程度柔軟に処理してくれるため、意識することはまずありません。

Splunk
| makeresults count=1
| eval NUM = 1.2, STR = "1.2"
| eval NUM_IF_NUM = if( NUM > 0,       "OK", "NG"),
       STR_IF_NUM = if( STR > 0,       "OK", "NG"),
       NUM_IF_STR = if( LEN(NUM) == 3, "OK", "NG"),
       STR_IF_STR = if( LEN(STR) == 3, "OK", "NG")

WS000235.JPG

では、 tonumber 関数、 tostring 関数は何のためにあるのでしょうか。
実は、2進数や16進数の値と通常の数値(10進数の値)を変換するのに用いられます。

2. tonumber

tonumber 関数は、2進数や16進数の値を通常の数値に変換します。
tonumber 関数は以下のように引数を指定することで、通常の数値を返します。

tonumber(N進数の値, N)

以下の例では、2進数の値を通常の数値に変換しています。

Splunk
| makeresults count=1
| eval BASE2 = "01011110"
| eval BASE10 = tonumber(BASE2, 2)

WS000238.JPG

3. tostring

tostring 関数は、通常の数値を16進数の値に変換します。
また、3桁毎にカンマ(,)を入れた数値や、秒数から時刻への変換といったフォーマットも指定できます。
tostring 関数は以下のように引数を指定することで、各フォーマットの値を文字列として返します。

tostring(数値, フォーマット)

フォーマットには以下の3種類が指定可能です。

フォーマット 説明 例(変換前) 例(変換後)
hex 通常の数値から16進数への変換 2022 7E6
commas 3桁毎にカンマ(,)を付与 1234567890 1,234,567,890
duration 秒数からHH:MM:SSへの変換 1000 00:16:40

以下の例では、通常の数値「9999」を各フォーマットに変換しています。

Splunk
| makeresults count=1
| eval NUM = 9999
| eval HEX = tostring(NUM, "hex"),
       COM = tostring(NUM, "commas"),
       DUR = tostring(NUM, "duration")

WS000236.JPG

なお、注意点として、「 hex 」のみ小数に対応していません。
また、「 commas 」は小数の場合小数点以下2桁まで表示され、それより下は四捨五入されます。
「 duration 」は元の数値があまりに大きい場合、日数が先頭に示され、その直後にプラス(+)、時刻はさらにその後ろに記載されます。

Splunk
| makeresults count=1
| eval NUM = 12345678.555555
| eval HEX = tostring(NUM, "hex"),
       COM = tostring(NUM, "commas"),
       DUR = tostring(NUM, "duration")

WS000237.JPG

0
2
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
0
2