このトピックでは、フロー制御関数の構文について説明し、パラメーターの説明と関数の例を示します。

関数

関数 説明
e_compose 操作を組み合わせます。
  • この関数は、e_ife_switch、または e_if_else 関数の操作を組み合わせるために使用されます。
  • システムは、この関数で指定された操作を順番に呼び出し、結果のイベントをディスパッチ、変換、および返します。
  • システムがイベントを削除する操作を呼び出した場合は、そのイベントに続く操作は実行されません。
e_if 条件と操作を組み合わせます。
  • 条件が true と評価された場合は、システムはその条件に関連付けられている操作を呼び出します。 条件が false と評価された場合は、システムはその条件に関連付けられている操作をスキップし、次の条件に進みます。
  • システムがイベントを削除する操作を呼び出した場合は、そのイベントに続く操作は実行されません。
e_if_else 関連付けられた操作を呼び出す条件を指定します。
e_switch 条件と操作を組み合わせます。
  • 条件が true と評価された場合は、システムは条件に関連付けられた操作を呼び出し、対応する結果を返します。 条件が false と評価された場合は、システムは関連する操作をスキップし、次の条件に進みます。
  • 指定された条件のいずれも true と評価されない場合でも、デフォルトのパラメーターが設定されている場合は、システムはデフォルトのパラメーターで指定された操作を呼び出し、対応する結果を返します。
  • システムがイベントを削除する操作を呼び出した場合は、そのイベントに続く操作は実行されません。

e_compose

  • 構文
    e_compose(Operation 1, Operation 2, ...)     
  • パラメーター
    パラメーター データ型 必須/任意 説明
    Operation 1 Global operation function 必須 1 つ以上の他のグローバル操作関数です。
    Operation 2 Global operation function 任意 1 つ以上の他のグローバル操作関数です。
  • レスポンス

    指定された操作が呼び出されたイベントが返されます。

  • 例:content フィールドの値が 123 の場合は、age フィールドと name フィールドを削除してから、content フィールドを ctx に設定します。
    生ログ:
    content: 123
    age: 23
    name: twiss
    処理ルール:
    e_if(e_search("content==123"), e_compose(e_drop_fields("age|name"), e_rename("content", "ctx")))
    処理結果:
    ctx: 123

e_if

  • 構文
    e_if(Condition, Operation)
    e_if(Condition 1, Operation 1, Condition 2, Operation 2, ....)
    Condition パラメーターと Operation パラメーターはペアである必要があります。
  • パラメーター
    パラメーター データ型 必須/任意 説明
    Condition All 必須 1 つ以上の他の式です。 結果がブール値でない場合は、システムは条件が true か false かを評価します。
    Operation Global operation function 任意 1 つ以上の他のグローバル操作関数です。
  • レスポンス

    指定された操作が呼び出されたイベントが返されます。

    • 例 1:指定されたフィールドが特定の値である場合は、関連する操作を呼び出します。
      result フィールドの値が failed または failure の場合は、システムは topic フィールドを login_failed_event に設定します。
      e_if(e_match("result": r"failed|failure"), e_set("__topic__", "login_failed_event"))
    • 例 2:指定されたフィールドが存在し、その値が null でない場合は、データを抽出します。
      request_body フィールドが存在し、その値が null でない場合は、システムは JSON 関数を呼び出して request_body フィールドを展開し、複数の値を表示します。
      e_if(v("request_body"), e_json("request_body"))
    • 例 3:指定され、ネストされたフィールドが特定の値である場合は、関連する操作を呼び出します。
      valid フィールドの値が小文字で failed となる場合は、システムはイベントを破棄します。
      e_if(op_eq(str_lower(v("valid")), "failed"), DROP)
    • 例4:複数の条件に関連付けられている操作を順番に呼び出します。
      e_if(True, e_set("__topic__", "default_login"), 
           e_match("valid", "failed"), e_set("__topic__", "login_failed_event")
        )

e_if_else

  • 構文
    e_if_else(Condition, Operation invoked with Condition evaluated to true, Operation invoked with Condition evaluated to false)
  • パラメーター
    パラメーター データ型 必須/任意 説明
    Condition All 必須 1 つ以上の他の式です。 結果がブール値でない場合は、システムは条件が true か false かを評価します。
    Operation invoked with Condition evaluated to true Global operation function 必須 1 つ以上の他のグローバル操作関数です。
    Operation invoked with Condition evaluated to false Global operation function はい 1 つ以上の他のグローバル操作関数です。
  • レスポンス

    指定された条件に関連する操作の結果が返されます。

  • 例:result フィールドの値が ok または pass、あるいは status フィールドの値が 200 の場合は、ログを保持します。 それ以外の場合は、ログを削除します。
    生ログ:
    result: Ok
    status: 400
    result: Pass
    status: 200
    result: failure
    status: 500
    処理ルール:
    e_if_else(op_or(e_match("result", r"(? i)ok|pass"), e_search("status== 200"), KEEP, DROP)
    処理結果: システムは、最初の 2 つのログエントリのみを保持します。
    result: Ok
    status: 400
    result: Pass
    status: 200

e_switch

  • 構文
    e_switch(Condition 1, Operation 1, ..., default=None)
    ConditionOperation パラメーターはペアである必要があります。
  • パラメーター
    パラメーター データ型 必須/任意 説明
    Condition All はい 1 つ以上の他の式です。 結果がブール値でない場合は、システムは条件が true か false かを評価します。
    Operation Global operation function 必須 1 つ以上の他のグローバル操作関数です。
    default Global operation function 任意 1 つ以上の他のデフォルトのグローバル操作関数です。 指定された条件のいずれも true と評価されない場合は、システムはこのパラメーターで指定された操作を呼び出します。
  • レスポンス

    指定された操作が呼び出されたイベントが返されます。

  • 例:content フィールドの値が 123 の場合は 、__topic__Number と設定します。 data フィールドの値が 123 の場合は、__topic__ フィールドを PRO と設定します。
    生ログ:
    __topic__:  
    age: 18
    content: 123
    name: maki
    data: 342
    __topic__:  
    age: 18
    content: 23
    name: maki
    data: 123
    処理ルール:
    e_switch(e_search("content==123"), e_set("__topic__", "Number", mode="overwrite"), e_search("data==123"), e_set("__topic__", "PRO", mode="overwrite"))
    処理結果:
    __topic__: Number
    age: 18
    content: 123
    name: maki
    data: 342
    __topic__: PRO
    age: 18
    content: 23
    name: maki
    data: 123