Les fonctions de contrôle de flux déterminent l'exécution des opérations de transformation des données en fonction de conditions. Utilisez ces fonctions pour enchaîner des opérations, appliquer une logique conditionnelle et acheminer les journaux vers différentes destinations.
Fonctions
|
Fonction |
Description |
|
Combine plusieurs opérations en une séquence.
Compatible avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Transformer des données JSON complexes. |
|
|
Évalue les conditions et exécute les opérations correspondantes. Prend en charge plusieurs paires condition-opération.
Cette règle de transformation équivaut au code Python suivant :
Compatible avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Transformer des données JSON complexes. |
|
|
Évalue une condition et exécute l'une des deux opérations en fonction du résultat.
Cette règle de transformation équivaut au code Python suivant :
|
|
|
Évalue plusieurs paires condition-opération dans l'ordre, à la manière d'une chaîne if-elif-else.
Cette règle de transformation équivaut au code Python suivant :
Compatible avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Distribuer les données vers plusieurs Logstores de destination. |
e_compose
Combine plusieurs opérations en un pipeline séquentiel.
-
Syntaxe
e_compose(Operation 1, Operation 2, ...) -
Paramètres
Nom du paramètre
Type
Obligatoire
Description
Operation 1
Fonction de traitement global
Oui
Une ou plusieurs fonctions de traitement global.
Operation 2
Fonction de traitement global
Non
Une ou plusieurs fonctions de traitement global.
-
Réponse
Renvoie le journal après l'exécution de toutes les opérations.
-
Exemples
Si la valeur du champ content est 123, supprimez les champs age et name et renommez le champ content en ctx.
-
Journal brut
content: 123 age: 23 name: twiss -
Règle de transformation
e_if( e_search("content==123"), e_compose(e_drop_fields("age|name"), e_rename("content", "ctx")), ) -
Résultat
ctx: 123
-
-
Références
Compatible avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Transformer des données JSON complexes.
e_if
Évalue les conditions et exécute les opérations correspondantes.
-
Syntaxe
e_if(Condition, Operation) e_if(Condition 1, Operation 1, Condition 2, Operation 2, ...)RemarqueSpécifiez les paramètres
ConditionetOperationpar paires. -
Paramètres
Nom du paramètre
Type
Obligatoire
Description
Condition
Arbitraire
Oui
Une expression ou une combinaison d'expressions. Les résultats non booléens sont évalués selon leur véracité.
Operation
Fonction de traitement global
Oui
Une ou plusieurs fonctions de traitement global.
-
Réponse
Renvoie le journal après l'exécution des opérations.
-
Exemples
-
Exemple 1 : Faites correspondre une valeur de champ et effectuez une opération.
Si la valeur du champ result est failed ou failure, définissez le champ __topic__ sur
login_failed_event.e_if(e_match("result", r"failed|failure"), e_set("__topic__", "login_failed_event")) -
Exemple 2 : Extrayez des données en fonction d'une valeur de champ.
Si le champ request_body existe et n'est pas vide, utilisez la fonction e_json pour développer la valeur du champ request_body en plusieurs champs.
e_if(v("request_body"), e_json("request_body")) -
Exemple 3 : Effectuez une évaluation avancée.
Si la valeur du champ valid est failed en minuscules, ignorez le journal.
e_if(op_eq(str_lower(v("valid")), "failed"), DROP) -
Exemple 4 : Évaluez plusieurs conditions dans l'ordre.
e_if(True, e_set("__topic__", "default_login"), e_match("valid", "failed"), e_set("__topic__", "login_failed_event") )
-
-
Références
Compatible avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Transformer des données JSON complexes.
e_if_else
Évalue une condition et exécute l'une des deux opérations en fonction du résultat.
-
Syntaxe
e_if_else(Condition, Operation if true, Operation if false) -
Paramètres
Nom du paramètre
Type
Obligatoire
Description
Condition
Arbitraire
Oui
Une expression ou une combinaison d'expressions. Les résultats non booléens sont évalués selon leur véracité.
Operation if true
Fonction de traitement global
Oui
Une ou plusieurs fonctions de traitement global.
Operation if false
Fonction de traitement global
Oui
Une ou plusieurs fonctions de traitement global.
-
Réponse
Renvoie le résultat de l'opération correspondant à la condition évaluée.
-
Exemples
Si la valeur du champ result est ok ou pass, ou si la valeur du champ status est 200, conservez le journal. Sinon, ignorez-le.
-
Journal brut
result: ok status: 400result: Pass status: 200result: failure status: 500 -
Règle de transformation
e_if_else( op_or(e_match("result", r"(?i)ok|pass"), e_search("status== 200")), KEEP, DROP ) -
Résultat : les deux premiers journaux sont conservés et le troisième est ignoré.
result: ok status: 400result: Pass status: 200
-
e_switch
Évalue plusieurs paires condition-opération dans l'ordre, à la manière d'une chaîne if-elif-else.
-
Syntaxe
e_switch(Condition 1, Operation 1, ..., default=None)RemarqueSpécifiez les paramètres
ConditionetOperationpar paires. -
Paramètres
Nom du paramètre
Type
Obligatoire
Description
Condition
Arbitraire
Oui
Une expression ou une combinaison d'expressions. Les résultats non booléens sont évalués selon leur véracité.
Operation
Fonction de traitement global
Oui
Une ou plusieurs fonctions de traitement global.
default
Fonction de traitement global
Non
Une ou plusieurs fonctions de traitement global. S'exécute lorsqu'aucune condition n'est remplie.
-
Réponse
Renvoie le journal après l'exécution de l'opération correspondante.
-
Exemples
-
Si la valeur du champ content est 123, définissez le champ __topic__ sur Number. Si la valeur du champ data est 123, définissez le champ __topic__ sur PRO.
-
Journal brut
__topic__: age: 18 content: 123 name: maki data: 342__topic__: age: 18 content: 23 name: maki data: 123 -
Règle de transformation
e_switch( e_search("content==123"), e_set("__topic__", "Number", mode="overwrite"), e_search("data==123"), e_set("__topic__", "PRO", mode="overwrite"), ) -
Résultat
__topic__: Number age: 18 content: 123 name: maki data: 342__topic__: PRO age: 18 content: 23 name: maki data: 123
-
-
Combinez e_switch avec e_output pour acheminer les journaux correspondant à des règles spécifiques vers différents Logstores. Définissez
default=e_drop()pour ignorer les journaux qui ne correspondent à aucune règle. Si le paramètredefaultn'est pas défini, les journaux non appariés sont envoyés au premier Logstore configuré.-
Journal brut
__topic__: sas-log-dns test: aliyun __topic__: aegis-log-network test:ecs __topic__: local-dns test:sls __topic__: aegis-log-login test: sls -
Règle de transformation
e_switch(e_match("__topic__","sas-log-dns"),e_output(name="target1"), e_match("__topic__","sas-log-process"),e_output(name="target2"), e_match("__topic__","local-dns"),e_output(name="target3"), e_match("__topic__","aegis-log-network"),e_output(name="target4"), e_match("__topic__","aegis-log-login"),e_output(name="target5"), default=e_drop())
-
-
-
Références
Compatible avec d'autres fonctions. Pour plus d'informations, consultez la rubrique Distribuer les données vers plusieurs Logstores de destination.