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 | |
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 |
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: | |
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.
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. |
|
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:
|
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.
NotaTodos 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óne_set("f1", 200). Esta función añade el campof1con el valor 200. Después del procesamiento, el registro queda así:{"__time__": "1234567", "__topic__": "", "k1": "test", "f1": "200"}. En este registro, tanto el campof1como 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 campotypecon 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 campostatuses 200. Si es verdadero, extrae el camporesultdel campodatamediante 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ónif_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 camporesultes 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_outputescribe un registro en un logstore de destino y lo elimina, no se ejecutan los pasos posteriores sobre ese registro.NotaLa función
e_coutputcopia 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 campodata. Si el valor del campodataes"abc, xyz", el registro se divide en dos. En uno de ellos, el valor del campodataes 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 |
|
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. |
|
|
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.