A transformação de dados utiliza diversas estruturas para processar logs, incluindo tipos básicos, tipos de eventos, identificadores fixos e objetos JSON.
Estruturas de dados básicas
A tabela a seguir lista os tipos de estruturas de dados básicas.
|
Tipo |
Descrição |
|
Integer |
Define valores de campo ou passa parâmetros para funções. Exemplo: |
|
Float |
Define valores de campo ou passa parâmetros para funções. Exemplo: |
|
String |
Strings aceitam as seguintes convenções:
Nota
Use aspas simples na string externa e aspas duplas no valor de busca interno. |
|
Bytes |
Difere da codificação de memória de string. |
|
empty |
Nota
Uma string vazia possui tipo de dados diferente de None ou null. |
|
List |
Um array, como
|
|
Tuple |
Funciona como uma lista. Exemplo: |
|
Dictionary (Dict) |
Coleção de pares chave-valor no formato
|
|
Boolean (Bool) |
Por exemplo, |
|
Table |
Estrutura de tabela com múltiplas colunas. Crie tabelas carregando conteúdo CSV de várias linhas de recursos externos ou recuperando dados multicolumn do ApsaraDB RDS ou de um Logstore. Tabelas são usadas principalmente para mapeamentos de enriquecimento de dados ou outros cenários avançados de configuração. |
|
Datetime object |
Representa data e hora na memória. Pode ser convertido em string de timestamp Unix ou string de tempo formatada, ou passado para funções |
Tipos de eventos
A transformação de dados suporta os seguintes tipos de eventos.
-
Tipo primitivo
A transformação de dados processa logs como um dicionário, como
{"__topic__": "access_log", "content": "....."}.As chaves e valores do dicionário correspondem aos campos e valores do log.
NotaChaves e valores de eventos são strings, e as chaves devem ser únicas.
-
Metacampos
Os metacampos incluem:
Campo de tempo
__time__: timestamp Unix (segundos desde 00:00:00 UTC, 1º de janeiro de 1970) de gravação do log. Armazenado como string inteira.Tópico
__topic__: organiza logs em um Logstore por tópico. Especifique um tópico ao gravar ou consultar logs.Origem
__source__: source do log, como o endereço IP da máquina geradora.
-
Modificação do campo de tempo
Modifique o valor do campo de tempo para alterar o horário do evento. Use funções de data e hora para outras operações neste campo.
NotaSe o campo de tempo for excluído, o sistema usará o tempo de processamento como horário do evento ao enviar o log para o destino.
-
Tags
Uma tag é um rótulo de log usado para classificação, no formato
__tag__:name.Se o registro de endereço IP público estiver ativado para o Logstore de origem, os logs incluirão a tag
tag:__tag__:__receive_time__.Logs do Container Service contêm várias tags relacionadas a contêineres, como
__tag__:__container_name__.Adicione ou modifique tags conforme necessário. Para adicionar uma tag chamada type, use
e_set("__tag__:type", "access_log").
-
Conversão automática na atribuição
Chaves e valores de eventos são strings. Ao atribuir um valor ou definir um novo campo, o sistema converte automaticamente chaves e valores para strings. Exemplo:
e_set("v1", 12.3) e_set("v2", True)Isso defina
v1como a string "12.3" ev2como a string "true".A tabela a seguir mostra a conversão de diferentes tipos de dados para strings.
Tipo
Exemplo
Tipo convertido
Exemplo convertido
Integer
1String
"1"Float
1.2String
"1.2"Boolean
TrueString
"true"Bytes
b"123"Decodificado para string usando UTF-8
"123"Tuple
-
Exemplo 1:
(1, 2, 3) -
Exemplo 2:
("a", 1)
String de uma lista
-
Exemplo 1:
"[1, 2, 3]" -
Exemplo 2:
"[\"a\", 1]"
List
-
Exemplo 1:
[1,2,3] -
Exemplo 2:
["a", 1]
String
-
Exemplo 1:
"[1, 2, 3]" -
Exemplo 2:
"[\"a\", 1]"
Dictionary
{"1":2, "3":4}String
"{\"1\": 2, \"3\": 4}"Datetime
datetime(2018, 10, 10, 10, 10, 10)String no formato ISO
2018-10-10 10:10:10 -
Identificadores fixos
A transformação de dados fornece identificadores fixos para simplificar o código e melhorar a legibilidade.
|
Identificador |
Tipo |
Descrição |
||
|
true |
Boolean |
Equivale a |
||
|
false |
Boolean |
Equivale a |
||
|
null |
None |
Equivale a |
||
|
F_TAGS |
String |
Regex para campos |
||
|
F_META |
String |
Regex para campos |
__topic__ |
__source__`. |
|
F_TIME |
String |
Nome do campo |
||
|
F_PACK_META |
String |
Regex para campos de |
__tag__:__pack_id__"`. |
|
|
F_RECEIVE_TIME |
String |
Campo |
||
|
C_JOB_REGION |
String |
ID da região da tarefa de transformação de dados, como |
||
|
C_JOB_PROJECT |
String |
Nome do projeto da tarefa de transformação de dados, como |
||
|
C_JOB_NAME |
String |
Nome da configuração da tarefa de transformação de dados, como |
||
|
C_JOB_ID |
String |
ID de execução da tarefa de transformação de dados, como |
Objetos JSON
Um objeto JSON é analisado a partir de uma string usando json_select ou json_parse. Composto por estruturas de dados básicas, ele segue as regras de conversão de strings de entrada mostradas na tabela a seguir.
|
String |
Objeto JSON |
Tipo real |
|
|
|
Integer |
|
|
|
Float |
|
|
|
Boolean |
|
|
|
Boolean |
|
|
|
String |
|
|
|
None |
|
|
|
List |
|
|
|
List |
|
|
|
Dictionary |
|
|
|
Dictionary |