すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:基本構文

最終更新日:Aug 27, 2024

このトピックでは、Log Serviceのドメイン固有言語 (DSL) の基本構文について説明します。

Comments

ステップのコメントを番号記号 (#) で開始します。 例:

# Specify the default topic. This is a comment at the beginning of a step. 
e_set("__topic__", "access_log")   # Specify the default topic. This is a comment at the end of a step. 

行の折り返し

関数のパラメータリストまたは文字列が1行に収まらない場合は、パラメータリストまたは文字列を区切ることができます。

  • パラメーターリストにコンマ (,) が含まれている場合は、パラメーターリストをコンマ (,) の直後に分割できます。

  • If you want to split a string, use a backslash (\) to indicate that the string continues in the next line.

例:

e_set("__topic__", "v1",
        "type", "v2",       # Use a comma (,) as a line feed. 
        "length", 100)
e_set("__topic__", "this is a very long long long .........." \
                            "......long text") # Use a backslash (\) as a line feed. 

関数呼び出し

  • 基本関数を呼び出す

    e_set("abc", "xyz")
    説明

    データ変換ステートメントを記述するときは、関数に渡すデータ型とパラメーターの数が関数の構文を満たしている必要があります。

  • 基本変数パラメータを渡す

    str_replace(value, old [,new [,count] ]) 
    説明

    The parameters that are enclosed in the square brackets [] are optional. For example, the new and count parameters in the preceding function are optional. You cannot pass these parameters the same way you pass the named parameters. これらのパラメータを順番に渡す必要があります。

    # Invalid examples
    str_replace("a-b-c", "-", new='%')
    str_replace("a-b-c", "-", new='%', count=1)
    # Valid examples
    str_replace("a-b-c", "-", '%')
    str_replace("a-b-c", "-", '%', 2)
  • 名前付きパラメータを渡す

    デフォルト値を持つパラメータは、名前付きパラメータと呼ばれます。 たとえば、関数 e_set("abc", "xyz", mode="fill")mode パラメーターは名前付きパラメーターです。

    • 特定の条件に基づいて、特定の関数で名前付きパラメーターの値を渡す必要があります。 詳細については、各関数のパラメーターの説明をご参照ください。

    • mode=... の形式でパラメータを設定すると、名前付きパラメータの値を渡すことができます。.

    • 複数の名前付きパラメータをランダムな順序で渡すことができます。 たとえば、e_csv("data", ["f1", "f2", "f3"], sep='#', quote="|")e_csv("data", ["f1", "f2", "f3"], quote="|", sep='#') は同義です。

    説明

    名前付きパラメータは、非名前付きパラメータの後に続く。

  • Invoke a combination of functions

    関数の戻り値をパラメーターの値として別の関数に渡すことができます。 この場合、返される値がパラメーターの値と同じデータ型であることを確認する必要があります。 例:

    e_set("abc", v("xyz"))
    e_set("abc", str_lower(v("xyz")))
  • 可変パラメーター

    You can pass variable parameters to specific functions. The v("f1", ....) function specifies that multiple parameters can be passed. Example: v("f1", "f2", "f3").

    If you need to pass both variable parameters and named parameters, you must place the named parameters after the variable parameters. Example: v("f1", "f2", "f3", "f4", mode="fill").

演算子

  • 比較演算子

    DSL for Log Serviceの標準モードでは、次の比較演算子がサポートされています: >, <,>=, <=,! =,==. Log Serviceが提供する比較機能を使用して操作を実行することもできます。

    • 比較演算子の使用

      # The following examples show how to use comparison operators. If the comparison condition is evaluated to True, the related log is discarded. 
      e_if(3 > 2, DROP)       # If 3 is greater than 2, the log is discarded. 
      e_if(3 < 2, DROP)       # If 3 is less than 2, the log is discarded. 
      e_if(3 >= 2, DROP)      # If 3 is greater than or equal to 2, the log is discarded. 
      e_if(3 <= 2, DROP)      # If 3 is less than or equal to 2, the log is discarded. 
      e_if(3 == 2, DROP)      # If 3 is equal to 2, the log is discarded. 
      e_if(3 != 2, DROP)      # If 3 is not equal to 2, the log is discarded. 
      e_if(1 < 2 < 3, DROP)   # If 2 is greater than 1 and 2 is less than 3, the log is discarded. 
      e_if(0 < ct_int(v('x')) < 100, DROP) # If the value of the x field is greater than 0 and less than 100, the log is discarded. 
    • Use the comparison functions that are provided by Log Service

      操作

      機能

      例:

      等しい (==)

      op_eq

      op_eq(v("name") 、"xiao ming")

      等しくない (!

      op_ne

      op_ne(v("name") 、"xiao ming")

      大なり (>)

      op_gt

      op_gt(ct_int(v("age"))), )

      以上 (>=)

      op_ge

      op_ge(ct_int(v("age")), 18)

      小なり (<)

      op_lt

      op_lt(ct_int(v("age")), 18)

      以下 (<=)

      op_le

      op_le(ct_int(v("age")), 18)

  • 論理演算子

    The following logical operators are supported in the DSL for Log Service in standard mode: AND, OR, and NOT. You can also use the logical functions that are provided by Log Service to perform the operations.

    • 論理演算子の使用

      # The following examples show how to use logical operators. If the logical condition is evaluated to True, the related log is discarded. 
      e_if(True and False, DROP)     # False is returned.
      e_if(True or False, DROP)      # True is returned.
      e_if(True and not False, DROP) # True is returned.
      e_if(3 > 2 and 1 < 3, DROP)    # True is returned.
      e_if(ct_int(v('x')) > 100 or ct_int(v('y')) < 100, DROP) # If the value of the x field is greater than 100 or the value of the y field is less than 100, True is returned.
    • Log Serviceが提供する論理関数を使用する

      操作

      機能

      例:

      Logical operator AND (and)

      op_and

      op_and(op_gt(v("age"), 18), op_lt(v("age"), 31))

      Logical operator OR (or)

      op_or

      op_or(op_le(v("age"), 18), op_gt(v("age"), 65))

      論理演算子NOT (not)

      op_not

      op_not(op_gt(v("age"), 18))

  • その他の演算子

    特定のDSLオペレータを標準モードで直接使用することはできません。 Log Serviceは、操作の実行に使用できる機能を提供します。 The following table describes the operators and functions.

    操作

    機能

    例:

    加算 (+)

    op_add

    op_add(v("age"), 2)

    減算 (-)

    op_sub

    op_sub(v("age"), 2)

    乗算 (*)

    op_mul

    op_mul(v("size"), 2)

    累乗 (**)

    op_pow

    op_pow(v("サイズ"), 2)

    切り捨て除算 (//)

    op_div_floor

    op_div_floor(v("bytes"), 1024)

    剰余演算 (%)

    op_mod

    op_mod(v("age"), 10)

    符号反転 (-)

    op_neg

    op_neg(v("profit"))

    存在チェック (in)

    op_in

    op_in(["pass", "ok"], v("result"))

    非存在チェック (not in)

    op_not_in

    op_not_in(["pass", "ok"], v("result"))

    文字列スライス ([ ...])

    op_slice

    op_slice(v("message"), 0, 20)

    In this example, the value of the a field is 3600 * 6. 次の例は、フィールドの値を指定するための無効な関数と有効な関数を示しています。

    # * 
    e_set("a", 3600 * 6)           # Invalid
    e_set("a", op_mul(3600, 6))    # Valid
    
    # /
    e_set("bytes_kb", v("bytes") / 1024)                 # Invalid
    e_set("bytes_kb", op_div_floor(v("bytes"), 1024))    # Valid

真または偽の評価

イベント処理ロジックを指定する条件がtrueかfalseかをチェックする関数もあります。 条件は、固定値または式関数によって返される値にすることができます。

DSL for Log Serviceオーケストレーションのすべてのタイプのデータに対して、真または偽の評価を実行できます。 次の表に、真または偽の評価のルールを示します。

データ型

正しい

間違い

ブール

真、真

偽、偽

なし

N/A

常にfalse

Numeric

0 や 0.0 以外

0 または 0.0

String

空でない

Empty string

バイト

空でない

空のバイト

Tuple

空でない

空のタプル

List

空でない

空のリスト

辞書

空でない

Empty dictionary

テーブル

1つ以上のテーブルが存在する

テーブルが存在しません

Datetime

1つ以上のdatetimeオブジェクトが存在する

datetimeオブジェクトが存在しません

次の関数を使用して、条件に基づいてログを破棄できます。

e_if(True, DROP)                     # If the value of the first parameter is True, the log is discarded. 
e_if(1, DROP)                        # If the value of the first parameter is 1, the log is discarded. 
e_if(v("abc"), DROP)                 #If the abc field exists and the value of this field is not empty, the log is discarded. 
e_if(str_isdigit(v("abc")), DROP)    # If the abc field exists and the value of this field contains only digits, the log is discarded.