基本構文と言語構成要素
構成要素 | 構文・記法 |
---|
tag という名前の予約属性またはタグ | tag (プレフィックスは不要) |
attr という名前の属性 | @attr (プレフィックス @ を使用) |
field という名前の計算フィールド | #field (プレフィックス # を使用) |
文字列リテラル (引用) 例: text または Quoted "text" | "text"
"Quoted \"text\"" (ログ検索構文が適用されます) |
数値リテラル (数字) 例: ten | 10 |
x と y というパラメーターを持つ func という名前の関数 | func(x, y) |
演算子 例: x と y というオペランドを持つバイナリ演算子 * | x*y |
演算子
利用可能な演算子 (優先順)
演算子 | 説明 |
---|
() | グループ化または関数の呼び出し |
! 、NOT 、- | 論理否定または算術否定 |
^ 、% | べき乗、剰余 |
* 、/ | 乗算、除算 |
+ 、- | 加算、減算 |
< 、<= 、> 、>= | 未満、以下、超、以上 |
== 、!= | 一致、不一致 |
&& 、AND | 論理積 |
|| , OR | 論理和 |
関数
利用可能な関数は以下のカテゴリーに分類されています。
算術演算
abs(num 数値)
数値の絶対値を返します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合: - @client_latency = 2 - @server_latency = 3 | #discrepancy = abs(@client_latency - @server_latency) | #discrepancy = 1 |
ceil(num 数値)
数値を最も近い整数に切り上げます。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@value = 2.2 | #rounded_up = ceil(@value) | #rounded_up = 3 |
floor(num 数値)
数値を最も近い整数に切り下げます。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@value = 9.99 | #rounded_down = floor(@value) | #rounded_down = 9 |
max(num 数値, [ num 数値, ...])
数値の集合から最大値を見つけます。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@CPU_temperatures = [-1, 1, 5, 5] | #highest_temp = max(@CPU_temperatures) | #highest_temp = 5 |
min(num 数値, [num 数値, ...])
数値の集合から最小値を見つけます。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@CPU_temperatures = [-1, 1, 5, 5] | #lowest_temp = min(@CPU_temperatures) | #lowest_temp = -1 |
round(num 数値, int 四捨五入する桁数)
数値を丸めます。オプションで、小数点以下の桁数を指定することもできます。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@value = -1234.01 | #rounded_to_tens = round(@value, -1) | #rounded_to_tens = -1230 |
文字列
concat(str 文字列 [str 文字列, expr 値, ...])
複数の値を 1 つの文字列に結合します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合: - @city = “Paris” - @country = “France” | #region = concat(@city, ", ", @country) | #region = “Paris, France” |
lower(str 文字列)
文字列を小文字に変換します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@first_name = “Bob” | #lower_name = lower(@first_name) | #lower_name = “bob” |
left(str 文字列, int 文字数)
文字列の先頭からテキストの一部を取り出します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@price = “USD10.50” | #currency = left(@price, 3) | #currency = “USD” |
proper(str 文字列)
文字列を単語の先頭だけ大文字にし、それ以外を小文字に変換します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@address = “123 main st” | #formatted_address = proper(@address) | #formatted_address = “123 Main St” |
split_before(str 文字列, str 区切り文字, int 区切り文字の出現回数)
文字列中の特定のパターンより前の部分のテキストを取り出します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@url = "www.example.com/path/to/split" | #url_extraction = split_before(@url, "/", 1) | #url_extraction = "www.example.com/path" |
#url_extraction = split_before(@url, "/", 2) | #url_extraction = "www.example.com/path/to" |
split_after(str 文字列, str 区切り文字, int 区切り文字の出現回数)
文字列中の特定のパターンより後の部分のテキストを取り出します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@url = "www.example.com/path/to/split" | #url_extraction = split_after(@url, "/", 0) | #url_extraction = "path/to/split" |
#url_extraction = split_after(@url, "/", 1) | #url_extraction = "to/split" |
substring(str 文字列, int 開始位置, int 取り出す長さ)
文字列の途中からテキストの一部を取り出します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@price = “USD10.50” | #dollar_value = substring(@price, 2, 2) | #dollar_value = “10” |
right(str 文字列, int 文字数)
文字列の末尾からテキストの一部を取り出します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合:
@price = “USD10.50” | #cent_value = right(@price, 2) | #cent_value = “50” |
textjoin(str 区切り文字, bool 空の文字列を無視するかどうか, str 文字列 [str 文字列, expr 値, ...])
複数の値を、区切り文字を挟みながら 1 つの文字列に結合します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合: - @city = “Paris” - @country = “France” | #region = textjoin(", ", "false", @city, @country) | #region = “Paris, France” |
upper(str 文字列)
文字列を大文字に変換します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合: @first_name = “Bob” | #upper_name = upper(@first_name) | #upper_name = “BOB” |
論理関数
if(expr 条件, expr 真の場合, expr 偽の場合)
条件を評価し、それに応じた値を返します。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合: - @location = “Paris, France” - @home = “New York, USA” | #abroad = if(@location == @home, "false", "true") | #abroad = “true” |
is_null(expr 値)
属性または式が null かどうかを調べます。
例
例 | 計算式 | 結果 |
---|
あるログイベントが次の属性を持つ場合: - @users_online = 5 - @max_capacity = 0 | is_null(@users_online / @max_capacity) | “true” |
参考資料