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: |
|
Float |
Establece valores de campos o pasa parámetros a las funciones. Por ejemplo: |
|
String |
Las cadenas admiten las siguientes convenciones:
Nota
Utilice comillas simples para la cadena externa y comillas dobles para el valor de búsqueda interno. La expresión |
|
Bytes |
Su codificación en memoria difiere de la de las cadenas. |
|
empty |
Nota
Una cadena vacía tiene un tipo de dato distinto al de None o null. |
|
List |
Un arreglo, como
|
|
Tuple |
Funciona igual que una lista. Por ejemplo: |
|
Dictionary (Dict) |
Colección de pares clave-valor con el formato
|
|
Boolean (Bool) |
Por ejemplo, |
|
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 |
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.
NotaLas 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.
NotaSi 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
v1como la cadena "12.3" yv2como 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
1String
"1"Float
1.2String
"1.2"Boolean
TrueString
"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 |
||
|
false |
Boolean |
Equivale a |
||
|
null |
None |
Equivale a |
||
|
F_TAGS |
String |
Expresión regular para los campos |
||
|
F_META |
String |
Expresión regular para los campos |
__topic__ |
__source__`. |
|
F_TIME |
String |
Nombre del campo |
||
|
F_PACK_META |
String |
Expresión regular para los campos |
__tag__:__pack_id__"`. |
|
|
F_RECEIVE_TIME |
String |
Campo |
||
|
C_JOB_REGION |
String |
ID de región de la tarea de transformación de datos, como |
||
|
C_JOB_PROJECT |
String |
Nombre del proyecto de la tarea de transformación de datos, como |
||
|
C_JOB_NAME |
String |
Nombre de la configuración del trabajo de transformación de datos, como |
||
|
C_JOB_ID |
String |
ID de ejecución de la tarea de transformación de datos, como |
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 |
|
|
|
Integer |
|
|
|
Float |
|
|
|
Boolean |
|
|
|
Boolean |
|
|
|
String |
|
|
|
None |
|
|
|
List |
|
|
|
List |
|
|
|
Dictionary |
|
|
|
Dictionary |