Todos los productos
Search
Centro de documentos

Simple Log Service:Sintaxis de transformación de datos

Última actualización: Sep 12, 2026

El DSL de Simple Log Service (SLS) se basa en Python y ofrece más de 200 funciones integradas para simplificar las tareas de transformación de datos. Este tema describe los modos de lenguaje, las categorías de funciones y los principios de ejecución del DSL.

Modos de lenguaje

El DSL de SLS es compatible con Python. En el modo estándar, este DSL representa un subconjunto de Python. Salvo las estructuras de datos y expresiones básicas, todas las demás reglas de sintaxis se implementan mediante funciones.

Categoría

Sintaxis de Python

Modo estándar

Estructura de datos

Número, cadena y booleano

Compatible.

No se admiten las cadenas que comienzan o terminan con """.

Tupla, lista, conjunto y diccionario

Compatible.

La estructura set no es compatible, por ejemplo, {1,2,3}.

Objeto

Solo se admiten las estructuras de datos extendidas integradas, como los objetos table y datetime.

Sintaxis básica

Operadores como el signo de suma (+), el signo de resta (-), el signo de multiplicación (×) y el operador de división (/)

En el código solo se pueden usar directamente los operadores de comparación, como ==, !=, >, y los operadores lógicos and, or y not. Para utilizar otros operadores, debe invocar funciones.

Comentarios

Compatible.

Asignación de variables

No es compatible. Debe pasarla mediante la invocación de una función.

Requisitos previos

Compatible. Funciones: e_if, e_if_else y e_switch.

Bucles

Compatible de forma indirecta. Debe usar funciones integradas anidadas para implementar bucles. A continuación se muestran algunas funciones de ejemplo que recorren los elementos de una matriz:

e_if(op_ge(op_len(json_parse(v("x"))), 1), e_set("x0", lst_get(v("x"), 0)))
e_if(op_ge(op_len(json_parse(v("x"))), 2), e_set("x1", lst_get(v("x"), 1)))

Función

Funciones integradas estándar de Python

No son compatibles. En su lugar, puede utilizar las más de 200 funciones integradas que proporciona el DSL de SLS.

Llamadas a funciones

Compatible. No se admiten las llamadas a funciones que usan desempaquetado de parámetros.

Funciones definidas por el usuario, como def o lambda

No es compatible. Sin embargo, se proporcionan más de 200 funciones globales de operación y expresión que puede invocar en cualquier combinación.

Módulo

Importación y uso de la biblioteca estándar de Python

No es compatible.

Creación de hilos y procesos

No es compatible.

Importación de bibliotecas de terceros

No es compatible.

Conexión de red externa o llamada a comandos externos

Incluye conectores de recursos integrados.

Categorías de funciones

En el modo estándar, el DSL de SLS ejecuta todas las operaciones mediante llamadas a funciones. El DSL ofrece más de 200 funciones integradas, clasificadas en funciones de procesamiento global y funciones de expresión.

  • Funciones de procesamiento global

    Las funciones de procesamiento global reciben, procesan y devuelven registros. Solo estas funciones permiten construir cada paso de una regla de transformación.

  • Funciones de expresión

    Las funciones de propósito general aceptan parámetros específicos. Al invocarlas en combinación y pasarlas como parámetros a una función de operación global, se define una lógica más flexible.

A continuación se comparan las capacidades de ambos tipos de funciones.

Tipo de función

Pasos generales

Recepción

Devolución

Modificación del registro

Llamadas combinadas

Operaciones y funciones globales

Compatible

Los registros se reciben automáticamente

De cero a varios registros

Compatible en la mayoría de los casos

Compatible

Funciones de expresión

No compatible

Solo unas cuantas funciones admiten el procesamiento directo de registros.

Estructuras de datos específicas

No compatible

Compatible

Funciones de procesamiento global

Función que recibe y devuelve registros.

Nota

Solo se puede colocar una función de procesamiento global en la primera línea de cada paso.

Una regla de transformación en el DSL de SLS utiliza la siguiente sintaxis:

GlobalFunction1(..parameters....)
GlobalFunction2(..parameters....)
GlobalFunction3(..parameters....)
GlobalFunction4(..parameters....)

Las funciones de procesamiento global se dividen en dos categorías:

Clasificación funcional

Descripción

Ejemplo

Funciones de control de flujo

Estas funciones gestionan el flujo del proceso, reciben registros e invocan otras funciones de manera condicional para procesarlos.

e_if, e_switch y e_if_else.

Funciones de procesamiento de eventos

Estas funciones transforman registros y devuelven de cero a varios registros.

A continuación se muestra un ejemplo de función:

  • e_drop_fields: descarta campos de registro.

  • e_kv: extrae y añade pares clave-valor de los registros.

  • e_dict_map: enriquece los registros.

Lógica de transformación:

  • Procesamiento básico

    La función de transformación de datos lee los datos del logstore de origen mediante streaming. Pasa cada registro como un diccionario a la regla de transformación. Luego, el sistema procesa los datos del registro de forma secuencial según las funciones definidas en la regla. Por último, envía el resultado de la transformación al logstore de destino.

    Nota

    Todos los campos y valores de un registro se envían como cadenas. Por ejemplo, el registro sin procesar {"__time__": "1234567", "__topic__": "", "k1": "test"} se procesa con la función e_set("f1", 200). Esta función añade el campo f1 con el valor 200. Después del procesamiento, el registro queda así: {"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"}. En este registro, tanto el campo f1 como el valor 200 son cadenas.

    Las funciones de procesamiento de eventos especificadas en una regla de transformación se invocan en secuencia. Cada función recibe un registro, lo procesa y devuelve el registro resultante.

    Por ejemplo, la función e_set("type", "test") añade el campo type con el valor test a un registro. La siguiente función recibe y procesa el registro modificado.

  • Evaluación de condiciones

    • e_if: esta función permite añadir expresiones condicionales para procesar registros. Si un registro no cumple la condición especificada, se omite la operación correspondiente. La función e_if implementa la lógica if.

      Por ejemplo, la función e_if(e_match("status", "200"), e_regex("data", "ret: \d+", "result")) comprueba si el valor del campo status es 200. Si es verdadero, extrae el campo result del campo data mediante la expresión regular especificada. De lo contrario, no ejecuta ninguna operación.

    • e_if_else: esta función opera de manera similar a la operación if_else.

  • Finalización del procesamiento

    • Un paso de una regla de transformación podría no devolver ningún registro, lo cual indica que el registro se eliminó.

      Por ejemplo, la función e_if(str_islower(v("result")), e_drop()) comprueba si el valor del campo result es una cadena en minúsculas. Si es verdadero, se descarta el registro y no se ejecutan los pasos posteriores sobre él. El sistema procesa automáticamente el siguiente registro.

    • Escribir un registro en un logstore de destino finaliza el procesamiento. Por ejemplo, si la función e_output escribe un registro en un logstore de destino y lo elimina, no se ejecutan los pasos posteriores sobre ese registro.

      Nota

      La función e_coutput copia el registro de salida y continúa con el procesamiento de los pasos posteriores.

  • División en paralelo:

    Un paso de una regla de transformación puede devolver varios registros, lo cual indica que el registro se dividió.

    Por ejemplo, la función e_split(data) divide un registro en dos según el valor del campo data. Si el valor del campo data es "abc, xyz", el registro se divide en dos. En uno de ellos, el valor del campo data es abc. En el otro, el valor es xyz.

    Los registros generados tras la división se procesan en los pasos posteriores.

Para obtener más información, consulte Global operation functions.

Funciones de expresión

Además de las funciones de procesamiento global, el DSL de SLS proporciona 200 funciones de expresión que aceptan parámetros específicos y devuelven valores concretos. Invoque una función de expresión o una combinación de ellas dentro de una función de procesamiento global. La sintaxis es la siguiente:

Global Processing Function 1(Expression Function 1(...), ...)
Global Processing Function 2(..., Expression Function 2(...), Expression Function 3(...), ...)

Las funciones de expresión se dividen en cuatro categorías:

Clasificación funcional

Descripción

Ejemplo

Funciones de comprobación de eventos

Estas funciones reciben registros, extraen u obtienen información específica y la devuelven sin modificarlos.

La función v devuelve el valor de un campo de registro. Las funciones e_search y e_match comprueban si un registro cumple una condición determinada.

Funciones de recursos

Estas funciones se conectan a recursos locales o externos, utilizan configuraciones de parámetros específicas y devuelven datos como diccionarios o tablas.

Funciones de recursos de OSS, RDS y logstore.

Funciones de control

Estas funciones ejecutan operaciones lógicas sobre expresiones. Utilizan parámetros específicos, aplican control condicional e invocan otras funciones de expresión para devolver resultados.

op_and, op_or, op_not, op_if y op_coalesce.

Otras funciones de expresión

Estas funciones aceptan valores fijos o los resultados de otras llamadas a funciones, y devuelven valores específicos.

Funciones de cadena, de fecha y hora, y de conversión de tipos.

Para obtener más información, consulte Expression functions.