Las funciones de control de flujo determinan cómo se ejecutan las operaciones de transformación de datos según ciertas condiciones. Utilice estas funciones para componer operaciones secuenciales, aplicar lógica condicional y enrutar registros a distintos destinos.
Funciones
|
Función |
Descripción |
|
Combina varias operaciones en una secuencia.
Admite la combinación con otras funciones. Para obtener más información, consulte Transform complex JSON data. |
|
|
Evalúa condiciones y ejecuta las operaciones correspondientes. Admite varios pares de condición-operación.
Esta regla de transformación equivale al siguiente código de Python:
Admite la combinación con otras funciones. Para obtener más información, consulte Transform complex JSON data. |
|
|
Evalúa una condición y ejecuta una de dos operaciones según el resultado.
Esta regla de transformación equivale al siguiente código de Python:
|
|
|
Evalúa varios pares de condición-operación en secuencia, de forma similar a una cadena if-elif-else.
Esta regla de transformación equivale al siguiente código de Python:
Admite la combinación con otras funciones. Para obtener más información, consulte Distribute data to multiple destination Logstores. |
e_compose
Combina varias operaciones en una canalización secuencial.
-
Sintaxis
e_compose(Operation 1, Operation 2, ...) -
Parámetros
Nombre del parámetro
Tipo
Obligatorio
Descripción
Operation 1
Función de procesamiento global
Sí
Una o más funciones de procesamiento global.
Operation 2
Función de procesamiento global
No
Una o más funciones de procesamiento global.
-
Respuesta
Devuelve el registro después de ejecutar todas las operaciones.
-
Ejemplos
Si el valor del campo content es 123, elimine los campos age y name, y cambie el nombre del campo content a ctx.
-
Registro sin procesar
content: 123 age: 23 name: twiss -
Regla de transformación
e_if( e_search("content==123"), e_compose(e_drop_fields("age|name"), e_rename("content", "ctx")), ) -
Resultado
ctx: 123
-
-
Referencias
Admite la combinación con otras funciones. Para obtener más información, consulte Transform complex JSON data.
e_if
Evalúa condiciones y ejecuta las operaciones correspondientes.
-
Sintaxis
e_if(Condition, Operation) e_if(Condition 1, Operation 1, Condition 2, Operation 2, ...)NotaEspecifique los parámetros
ConditionyOperationen pares. -
Parámetros
Nombre del parámetro
Tipo
Obligatorio
Descripción
Condition
Arbitrario
Sí
Una expresión o una combinación de expresiones. Los resultados no booleanos se evalúan por su valor de verdad.
Operation
Función de procesamiento global
Sí
Una o más funciones de procesamiento global.
-
Respuesta
Devuelve el registro después de ejecutar las operaciones.
-
Ejemplos
-
Ejemplo 1: Coincidencia con un valor de campo y ejecución de una operación.
Si el valor del campo result es failed o failure, establezca el campo __topic__ en
login_failed_event.e_if(e_match("result", r"failed|failure"), e_set("__topic__", "login_failed_event")) -
Ejemplo 2: Extracción de datos según un valor de campo.
Si el campo request_body existe y no está vacío, utilice la función e_json para expandir el valor del campo request_body en varios campos.
e_if(v("request_body"), e_json("request_body")) -
Ejemplo 3: Ejecución de una evaluación avanzada.
Si el valor del campo valid es failed en minúsculas, descarte el registro.
e_if(op_eq(str_lower(v("valid")), "failed"), DROP) -
Ejemplo 4: Evaluación de varias condiciones en secuencia.
e_if(True, e_set("__topic__", "default_login"), e_match("valid", "failed"), e_set("__topic__", "login_failed_event") )
-
-
Referencias
Admite la combinación con otras funciones. Para obtener más información, consulte Transform complex JSON data.
e_if_else
Evalúa una condición y ejecuta una de dos operaciones según el resultado.
-
Sintaxis
e_if_else(Condition, Operation if true, Operation if false) -
Parámetros
Nombre del parámetro
Tipo
Obligatorio
Descripción
Condition
Arbitrario
Sí
Una expresión o una combinación de expresiones. Los resultados no booleanos se evalúan por su valor de verdad.
Operation if true
Función de procesamiento global
Sí
Una o más funciones de procesamiento global.
Operation if false
Función de procesamiento global
Sí
Una o más funciones de procesamiento global.
-
Respuesta
Devuelve el resultado de la operación que corresponde a la condición evaluada.
-
Ejemplos
Si el valor del campo result es ok o pass, o si el valor del campo status es 200, conserve el registro. De lo contrario, descártelo.
-
Registro sin procesar
result: ok status: 400result: Pass status: 200result: failure status: 500 -
Regla de transformación
e_if_else( op_or(e_match("result", r"(?i)ok|pass"), e_search("status== 200")), KEEP, DROP ) -
Resultado: Se conservan los dos primeros registros y se descarta el tercero.
result: ok status: 400result: Pass status: 200
-
e_switch
Evalúa varios pares de condición-operación en secuencia, de forma similar a una cadena if-elif-else.
-
Sintaxis
e_switch(Condition 1, Operation 1, ..., default=None)NotaEspecifique los parámetros
ConditionyOperationen pares. -
Parámetros
Nombre del parámetro
Tipo
Obligatorio
Descripción
Condition
Arbitrario
Sí
Una expresión o una combinación de expresiones. Los resultados no booleanos se evalúan por su valor de verdad.
Operation
Función de procesamiento global
Sí
Una o más funciones de procesamiento global.
default
Función de procesamiento global
No
Una o más funciones de procesamiento global. Se ejecuta cuando no se cumple ninguna condición.
-
Respuesta
Devuelve el registro después de ejecutar la operación coincidente.
-
Ejemplos
-
Si el valor del campo content es 123, establezca el campo __topic__ en Number. Si el valor del campo data es 123, establezca el campo __topic__ en PRO.
-
Registro sin procesar
__topic__: age: 18 content: 123 name: maki data: 342__topic__: age: 18 content: 23 name: maki data: 123 -
Regla de transformación
e_switch( e_search("content==123"), e_set("__topic__", "Number", mode="overwrite"), e_search("data==123"), e_set("__topic__", "PRO", mode="overwrite"), ) -
Resultado
__topic__: Number age: 18 content: 123 name: maki data: 342__topic__: PRO age: 18 content: 23 name: maki data: 123
-
-
Combine e_switch con e_output para enrutar los registros que coinciden con reglas específicas a distintos logstores. Establezca
default=e_drop()para descartar los registros que no coincidan con ninguna regla. Si no se configura el parámetrodefault, los registros sin coincidencia se envían al primer logstore configurado.-
Registro sin procesar
__topic__: sas-log-dns test: aliyun __topic__: aegis-log-network test:ecs __topic__: local-dns test:sls __topic__: aegis-log-login test: sls -
Regla de transformación
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())
-
-
-
Referencias
Admite la combinación con otras funciones. Para obtener más información, consulte Distribute data to multiple destination Logstores.