Todos los productos
Search
Centro de documentos

Simple Log Service:Estructuras de datos

Última actualización: Sep 08, 2026

La transformación de datos utiliza varias estructuras de datos para procesar los datos de registros. Entre ellas se incluyen los tipos básicos, los tipos de eventos, los identificadores fijos y los objetos JSON.

Estructuras de datos básicas

A continuación se muestran los tipos de estructuras de datos básicas.

Tipo

Descripción

Integer

Establece valores de campos o pasa parámetros a las funciones.

Por ejemplo: e_set("f1", 100) establece el campo f1 en 100.

Float

Establece valores de campos o pasa parámetros a las funciones.

Por ejemplo: e_set("f1", 1.5) establece el campo f1 en 1.5.

String

Las cadenas admiten las siguientes convenciones:

  • "abc" equivale a 'abc'. Si una cadena contiene comillas dobles ("), utilice comillas simples para delimitarla, por ejemplo, 'abc"xyz'. También puede usar una barra invertida (\) para escapar las comillas dobles, como en "abc\"xyz".

    La barra invertida (\) funciona como carácter de escape. Por ejemplo, "\\abc\\xyz" representa la cadena \abc\xyz.

  • r"\\10.64.1.1\share\folder" equivale a "\\\\10.64.1.1\\share\\folder". Ambas representan la cadena \\10.64.1.1\share\folder.

  • Las cadenas multibyte se representan en Unicode. Por ejemplo, la longitud de la cadena Chinese es 2.

  • Las expresiones regulares se representan como cadenas.

Nota

Utilice comillas simples para la cadena externa y comillas dobles para el valor de búsqueda interno. La expresión e_search("domain: '/url/test.jsp'") es incorrecta. El formato correcto es e_search('domain: "/url/test.jsp"').

Bytes

Su codificación en memoria difiere de la de las cadenas. b'abc' se emplea como parámetro o tipo de retorno en algunas funciones especiales.

empty

None o null indica la ausencia de un valor. Algunos parámetros con nombre de las funciones tienen None como valor predeterminado, lo cual define un comportamiento específico.

Nota

Una cadena vacía tiene un tipo de dato distinto al de None o null.

List

Un arreglo, como [1,2,3,4].

  • Algunas funciones aceptan listas como parámetros. Por ejemplo: e_dict_map("dict data", ["f1", "f2", "f3"], ...).

  • Otras funciones devuelven listas. Por ejemplo, json_select devuelve una lista cuando selecciona un arreglo.

Tuple

Funciona igual que una lista. Por ejemplo: (1,2,3,4).

Dictionary (Dict)

Colección de pares clave-valor con el formato {"key": "value", "k2": "v2", ...}. Las claves suelen ser cadenas únicas, mientras que los valores pueden ser de cualquier tipo de los mencionados anteriormente. Los diccionarios usan hashing y no tienen un orden definido.

  • Un evento es un tipo especial de diccionario.

  • Ciertas funciones aceptan diccionarios en formatos específicos. Por ejemplo: {"key": [1,2,3], "key2": {"k3": "v3"}}.

  • También se utilizan como datos de entrada en las asignaciones de diccionarios.

Boolean (Bool)

Por ejemplo, True, False, true o false.

Table

Estructura de tabla con varias columnas. Construya tablas al cargar contenido CSV de varias filas desde recursos externos o al recuperar datos de varias columnas de ApsaraDB RDS o de un logstore. Se usan principalmente para asignaciones de enriquecimiento de datos u otros escenarios avanzados de configuración.

Datetime object

Representa una fecha y hora en memoria. Se puede convertir a una cadena de marca de tiempo Unix o a una cadena de tiempo con formato. También se puede pasar a las funciones dt_ para transformarlo más a fondo.

Tipos de eventos

La transformación de datos admite los siguientes tipos de eventos.

  • Tipo primitivo

    La transformación de datos procesa los datos de registros como un diccionario, por ejemplo, {"__topic__": "access_log", "content": "....."}.

    Las claves y los valores del diccionario corresponden a los campos y los valores del registro.

    Nota

    Las claves y los valores de los eventos son cadenas, y las claves deben ser únicas.

  • Metacampos

    Los metacampos incluyen:

    • Campo de tiempo __time__: marca de tiempo Unix (segundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970) en la que se escribió el registro. Se almacena como una cadena de enteros.

    • Tema __topic__: organiza los registros de un logstore por tema. Especifique un tema al escribir o consultar registros.

    • Origen __source__: origen del registro, como la dirección IP de la máquina que lo generó.

  • Modificación del campo de tiempo

    Modifique el valor del campo de tiempo para cambiar la hora del evento. También puede usar funciones de fecha y hora para otras operaciones sobre este campo.

    Nota

    Si se elimina el campo de tiempo, el sistema usa la hora de procesamiento como hora del evento al enviar el registro al destino.

  • Etiquetas

    Una etiqueta es un rótulo de registro que sirve para clasificarlo, con el formato __tag__:name.

    • Si se habilita el registro de direcciones IP públicas en el logstore de origen, los registros incluyen la etiqueta tag:__tag__:__receive_time__.

    • Los registros de Container Service contienen varias etiquetas relacionadas con contenedores, como __tag__:__container_name__.

    • Puede agregar o modificar etiquetas. Para agregar una etiqueta llamada type, use e_set("__tag__:type", "access_log").

  • Conversión automática en la asignación

    Las claves y los valores de los eventos son cadenas. Cuando asigne un valor o establezca un campo nuevo, las claves y los valores se convierten automáticamente a cadenas. Por ejemplo:

    e_set("v1", 12.3)
    e_set("v2", True)

    Esto establece v1 como la cadena "12.3" y v2 como la cadena "true".

    A continuación se muestra cómo se convierten a cadena los distintos tipos de datos.

    Tipo

    Ejemplo

    Tipo convertido

    Ejemplo convertido

    Integer

    1

    String

    "1"

    Float

    1.2

    String

    "1.2"

    Boolean

    True

    String

    "true"

    Bytes

    b"123"

    Decodificado a una cadena mediante UTF-8

    "123"

    Tuple

    • Ejemplo 1: (1, 2, 3)

    • Ejemplo 2: ("a", 1)

    Cadena de una lista

    • Ejemplo 1: "[1, 2, 3]"

    • Ejemplo 2: "[\"a\", 1]"

    List

    • Ejemplo 1: [1,2,3]

    • Ejemplo 2: ["a", 1]

    String

    • Ejemplo 1: "[1, 2, 3]"

    • Ejemplo 2: "[\"a\", 1]"

    Dictionary

    {"1":2, "3":4}

    String

    "{\"1\": 2, \"3\": 4}"

    Datetime

    datetime(2018, 10, 10, 10, 10, 10)

    Cadena en formato ISO

    2018-10-10 10:10:10

Identificadores fijos

La transformación de datos proporciona identificadores fijos para simplificar el código y mejorar su legibilidad.

Identificador

Tipo

Descripción

true

Boolean

Equivale a True.

false

Boolean

Equivale a False.

null

None

Equivale a None.

F_TAGS

String

Expresión regular para los campos TAG. Equivale a "__tag__:.+".

F_META

String

Expresión regular para los campos TAG, __topic__ y __source__. Equivale a `__tag__:.+

__topic__

__source__`.

F_TIME

String

Nombre del campo __time__. Equivale a __time__.

F_PACK_META

String

Expresión regular para los campos pack meta. Equivale a `"__pack_meta__

__tag__:__pack_id__"`.

F_RECEIVE_TIME

String

Campo tag para la hora en que el servidor recibió el registro. Equivale a "__tag__:__receive_time__".

C_JOB_REGION

String

ID de región de la tarea de transformación de datos, como cn-hangzhou. Por ejemplo: e_set("job_region", C_JOB_REGION).

C_JOB_PROJECT

String

Nombre del proyecto de la tarea de transformación de datos, como my-sls-project. Por ejemplo: e_set("job_project", C_JOB_PROJECT).

C_JOB_NAME

String

Nombre de la configuración del trabajo de transformación de datos, como etl-1649227848-642277. Por ejemplo: e_set("job_name", C_JOB_NAME).

C_JOB_ID

String

ID de ejecución de la tarea de transformación de datos, como 73b96061b8c1c2101d558139bf641ea9. Por ejemplo: e_set("job_id", C_JOB_ID).

Objetos JSON

Un objeto JSON se analiza sintácticamente a partir de una cadena mediante json_select o json_parse. Está compuesto por estructuras de datos básicas. A continuación se muestra cómo se convierten las cadenas de entrada en objetos JSON.

Cadena

Objeto JSON

Tipo real

1

1

Integer

1.2

1.2

Float

true

True

Boolean

false

False

Boolean

"abc"

"abc"

String

null

None

None

["v1", "v2", "v3"]

["v1", "v2", "v3"]

List

["v1", 3, 4.0]

["v1", 3, 4.0]

List

{"v1": 100, "v2": "good"}

{"v1": 100, "v2": "good"}

Dictionary

{"v1": {"v11": 100, "v2": 200}, "v3": "good"}

{"v1": {"v11": 100, "v2": 200}, "v3": "good"}

Dictionary