Este tópico descreve a sintaxe e os parâmetros das funções de mapeamento e enriquecimento, além de apresentar exemplos de uso.
Funções
Categoria | Função | Descrição |
Mapeamento baseado em campos | Mapeia o valor de um campo de entrada para um valor em um dicionário de dados especificado e retorna um novo campo. Você pode usar esta função com outras funções. Para mais informações, consulte Usar a função e_dict_map para enriquecer dados. | |
Mapeia o valor de um campo de entrada para uma linha em uma tabela especificada e retorna um novo campo. Você pode usar esta função com outras funções. Para mais informações, consulte Enriquecer códigos de status de resposta HTTP usando a função e_table_map. | ||
Enriquece um log bruto usando uma tabela de dados no Tablestore como tabela de dimensão. | ||
Enriquece um log bruto usando uma tabela de dados no ApsaraDB for Redis como tabela de dimensão. |
e_dict_map
A função e_dict_map mapeia o valor de um campo de entrada para um valor em um dicionário de dados especificado e retorna um novo campo.
-
Sintaxe
e_dict_map(data, field, output_field, case_insensitive=True, missing=None, mode="overwrite") -
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
data
Dict
Sim
Dicionário de dados usado para mapeamento. O valor deste parâmetro deve seguir o formato padrão
{key01:value01,key01:value02,...}. As chaves devem ser strings. Exemplo:{"1": "TCP", "2": "UDP", "3": "HTTP", "*": "Unknown"}.field
String ou lista de strings
Sim
Um ou mais nomes de campos. Se o valor deste parâmetro contiver vários nomes de campos, o sistema executará as seguintes operações:
Mapeia os nomes dos campos sequencialmente.
Se o sistema encontrar correspondência para múltiplos valores nos campos e o parâmetro mode estiver definido como overwrite, retornará o último valor correspondente.
Se não houver correspondência de valores para os campos, retornará o valor do parâmetro missing.
output_field
String
Sim
Nome do campo que a função deve retornar.
case_insensitive
Boolean
Não
Defina se a diferenciação entre maiúsculas e minúsculas será desativada durante o mapeamento.
True: desativa a diferenciação entre maiúsculas e minúsculas. Este é o valor padrão.
False: ativa a diferenciação entre maiúsculas e minúsculas.
NotaSe o dicionário de dados contiver várias chaves que diferem apenas na capitalização e o parâmetro case_insensitive estiver definido como True, o sistema mapeará primeiro o valor do campo de entrada para uma chave com a mesma capitalização. Caso essa chave exata não exista, o sistema mapeará o valor aleatoriamente para uma das múltiplas chaves disponíveis.
missing
String
Não
Valor atribuído ao campo especificado por output_field quando nenhuma correspondência é encontrada para o campo de entrada. Valor padrão: None, indicando que nenhuma atribuição ocorre.
NotaSe o dicionário de dados contiver uma chave asterisco (), o parâmetro
missingtorna-se inválido, pois o asterisco () tem prioridade sobre o parâmetromissing.mode
String
Não
Modo de sobrescrita de campos. Valor padrão: overwrite. Para mais informações, consulte Verificação de extração de campos e modos de sobrescrita.
-
Resposta
Retorna um log contendo um novo campo.
-
Exemplos
-
Exemplo 1: Mapeie o valor do campo pro no log bruto para um valor em um dicionário de dados e gere um novo campo chamado protocol.
-
Log bruto
data: 123 pro: 1 -
Regra de transformação
e_dict_map( {"1": "TCP", "2": "UDP", "3": "HTTP", "6": "HTTPS", "*": "Unknown"}, "pro", "protocol", ) -
Resultado
data: 123 pro: 1 protocol: TCP
-
-
Exemplo 2: Mapeie o valor do campo status nos logs brutos para valores em um dicionário de dados e gere um novo campo chamado message.
-
Logs brutos
status: 500status: 400status: 200 -
Regra de transformação
e_dict_map({"400": "Error", "200": "Success", "*": "Other"}, "status", "message") -
Resultado
status: 500 message: Otherstatus: 400 message: Errorstatus: 200 message: Success
-
-
-
Referências
Você pode usar esta função com outras funções. Para mais informações, consulte Usar a função e_dict_map para enriquecer dados.
e_table_map
A função e_table_map mapeia o valor de um campo de entrada para uma linha em uma tabela especificada e retorna um novo campo.
-
Sintaxe
e_table_map(data, field, output_fields, missing=None, mode="fill-auto") -
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
data
Table
Sim
Tabela usada para mapeamento.
NotaAo usar as funções de recurso
res_rds_mysqleres_log_logstore_pullcomo fontes de dados, defina o parâmetroprimary_keys. A ausência dessa configuração impacta severamente o desempenho e pode causar atrasos na tarefa. Para mais informações sobre como configurar o parâmetroprimary_keys, consulte Funções de recurso.field
String, lista de strings ou lista de tuplas
Sim
Campo de entrada. Se um log não contiver o campo, nenhuma operação será executada nesse log.
output_fields
String, lista de strings ou lista de tuplas
Sim
Campos de saída. Exemplo:
["province", "pop"].missing
String
Não
Valor atribuído aos campos especificados por output_fields quando nenhuma correspondência é encontrada para o campo de entrada. Valor padrão: None, indicando que nenhuma atribuição ocorre. Para mapear o campo de entrada para múltiplas colunas, defina o parâmetro
missingcomo uma lista de valores padrão correspondentes ao campo de entrada. A quantidade de valores padrão deve ser igual ao número de colunas.NotaSe a tabela contiver uma coluna asterisco (), o parâmetro
missingtorna-se inválido, pois o asterisco () tem prioridade sobre o parâmetromissing.mode
String
Não
Modo de sobrescrita de campos. Valor padrão: fill-auto. Para mais informações, consulte Verificação de extração de campos e modos de sobrescrita.
-
Resposta
Retorna um log contendo novos campos.
-
Exemplos
-
Exemplo 1: Mapeie o valor do campo city para uma linha em uma tabela e retorne o valor do campo province dessa linha.
-
Log bruto
data: 123 city: nj -
Regra de transformação
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", "province" ) -
Resultado
data: 123 city: nj province: js
-
-
Exemplo 2: Mapeie o valor do campo city para uma linha em uma tabela e retorne os valores dos campos province e pop dessa linha.
-
Log bruto
data: 123 city: nj -
Regra de transformação
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), "city", ["province", "pop"], ) -
Resultado
data: 123 city: nj province: js pop: 800
-
-
Exemplo 3: Use a função tab_parse_csv para construir uma tabela, mapeie o valor do campo city para uma linha nessa tabela e retorne os valores dos campos province e pop da linha correspondente.
-
Log bruto
data: 123 city: nj -
Regra de transformação
e_table_map( tab_parse_csv("city#pop#province\nnj#800#js\nsh#2000#sh", sep="#"), "city", ["province", "pop"], ) -
Resultado
data: 123 city: nj province: js pop: 800
-
-
Exemplo 4: Use a função tab_parse_csv para construir uma tabela, mapeie o valor do campo city para uma linha nessa tabela e retorne os valores dos campos province e pop da linha correspondente.
-
Log bruto
data: 123 city: nj -
Regra de transformação
e_table_map( tab_parse_csv( "city,pop,province\n|nj|,|800|,|js|\n|shang hai|,2000,|SHANG,HAI|", quote="|" ), "city", ["province", "pop"], ) -
Resultado
data: 123 city: nj province: js pop: 800
-
-
Exemplo 5: O campo de entrada difere do campo correspondente na tabela de mapeamento. Localize uma linha na tabela com base nos campos cty e city e retorne o valor do campo province dessa linha.
-
Log bruto
data: 123 cty: nj -
Regra de transformação
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city")], "province", ) -
Resultado
data: 123 cty: nj province: js
-
-
Exemplo 6: O campo de entrada difere do campo correspondente na tabela de mapeamento. Mapeie os dados e renomeie o campo de saída.
-
Log bruto
data: 123 cty: nj -
Regra de transformação
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city")], [("province", "pro")], ) -
Resultado
data: 123 cty: nj pro: js
-
-
Exemplo 7: Mapeie os valores de múltiplos campos para uma linha em uma tabela.
-
Log bruto
data: 123 city: nj pop: 800 -
Regra de transformação
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), ["city", "pop"], "province", ) -
Resultado
data: 123 city: nj pop: 800 province: js
-
-
Exemplo 8: Mapeie os valores de múltiplos campos para uma linha em uma tabela. Os campos de entrada diferem dos campos correspondentes na tabela de mapeamento.
-
Log bruto
data: 123 cty: nj pp: 800 -
Regra de transformação
e_table_map( tab_parse_csv("city,pop,province\nnj,800,js\nsh,2000,sh"), [("cty", "city"), ("pp", "pop")], "province", ) -
Resultado
data: 123 cty: nj pp: 800 province: js
-
-
-
Referências
Você pode usar esta função com outras funções. Para mais informações, consulte Enriquecer códigos de status de resposta HTTP usando a função e_table_map.
e_tablestore_map
A função e_tablestore_map enriquece um log bruto usando uma tabela de dados no Tablestore como tabela de dimensão.
-
Sintaxe
e_tablestore_map( fields, endpoint, ak_id, ak_secret, instance_name, table_names, output_fields=None, output_table_name=None, encoding="utf8", mode="fill-auto", ) -
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
fields
String, número, lista ou lista de tuplas
Sim
Campos do log bruto usados para mapear dados entre o log bruto e a tabela de dados. A função mapeia múltiplos campos do log bruto para chaves primárias na tabela de dados individualmente. Exemplos:
Se a tabela de dados contiver a chave primária a e o log bruto contiver o campo a, use
fields="a".Se a tabela de dados contiver as chaves primárias a, b e c, e o log bruto contiver os campos a, b e c, use
fields=["a", "b", "c"].Se a tabela de dados contiver as chaves primárias a, b e c, e o log bruto contiver os campos a1, b1 e c1, use
fields=[("a1", "a"), ("b1", "b"), ("c1", "c")].
endpoint
String
Sim
Endpoint da instância do Tablestore onde a tabela de dados foi criada. Para mais informações, consulte Endpoints.
NotaVocê pode usar o endpoint de virtual private cloud (VPC) ou o endpoint público da instância do Tablestore. O endpoint VPC destina-se ao acesso dentro da mesma região, enquanto o endpoint público permite acesso via Internet independentemente da região.
ak_id
String
Sim
AccessKey ID da conta com permissões para acessar a instância do Tablestore. Para mais informações, consulte Criar um AccessKey.
Ao usar um usuário RAM, certifique-se de que ele possua as permissões de acesso necessárias, como AliyunOTSReadOnlyAccess. Para mais informações, consulte Gerenciar permissões de usuário RAM.
ak_secret
String
Sim
AccessKey secret da conta com permissões para acessar a instância do Tablestore. Para mais informações, consulte Criar um AccessKey.
instance_name
String
Sim
Nome da instância do Tablestore.
table_names
String, lista de strings ou lista de tuplas
Sim
Nome da tabela de dados. Se a tabela usar um índice secundário, defina este parâmetro com o nome do índice. Para mais informações sobre o recurso de índice secundário, consulte Criar um índice secundário.
Por exemplo, se o índice secundário index1 foi criado para a tabela de dados, defina este parâmetro como
"index1".output_fields
List
Não
Campos de saída. Você pode especificar nomes de colunas de chave primária ou colunas de atributo. Exemplo:
["province", "pop"]. Se você não configurar este parâmetro, todas as colunas da linha correspondente aos campos de entrada serão retornadas.NotaCaso existam múltiplas tabelas de dados criadas na instância do Tablestore, a função retornará apenas os dados da primeira tabela usada para correspondência.
output_table_name
String
Não
Nome da tabela de dados onde os dados retornados são armazenados. Valor padrão: None, indicando que os campos de saída não contêm o nome da tabela. Ao definir este parâmetro como uma string, os campos de saída incluirão o nome da tabela.
Por exemplo, usando a tabela de dados chamada test e a regra de transformação incluindo
output_fields=["province", "pop"],output_table_name="table_name": se as colunas de dados["province", "pop"]na tabela test forem correspondidas, os campos de saída serãoprovince: xxx, pop:xxx,table_name:test.encoding
String
Não
Método de codificação dos parâmetros da requisição HTTPS. Valor padrão: utf-8.
mode
String
Não
Modo de sobrescrita de campos. Valor padrão: fill-auto. Para mais informações, consulte Verificação de extração de campos e modos de sobrescrita.
-
Resposta
Retorna um log contendo novos campos.
-
Exemplos
Os exemplos a seguir baseiam-se na tabela de dados table_name_test abaixo.
city (chave primária)
pop (chave primária)
cid
province
region
bj
300
1
bj
huabei
nj
800
2
js
huadong
sh
200
3
sh
huadong
-
Exemplo 1: Localize uma linha na tabela de dados com base nos campos city e pop e retorne os valores das colunas province e cid dessa linha.
-
Log bruto
city:sh name:maki pop:200 -
Regra de transformação
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test", output_fields=["province","cid"]) -
Resultado
city:sh name:maki pop:200 cid:3 province:sh
-
-
Exemplo 2: Mapeie os campos city1 e pop1 do log bruto para as chaves primárias city e pop na tabela de dados, localize uma linha com base nesses campos e retorne os valores de todas as colunas dessa linha.
-
Log bruto
city1:sh name:maki pop1:200 -
Regra de transformação
e_tablestore_map( [("city1","city"), ("pop1", "pop")], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test") -
Resultado
city:sh name:maki pop:200 cid:3 province:sh region:huadong
-
-
Exemplo 3: Localize uma linha na tabela de dados com base nos campos city e pop e retorne os valores de todas as colunas dessa linha. Defina output_table_name como
"table_name". No resultado retornado, você pode visualizar o nome da tabela de dados onde as informações foram armazenadas.-
Log bruto
city:sh name:maki pop:200 -
Regra de transformação
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "table_name_test", output_table_name="table_name" ) -
Resultado
city:sh name:maki pop:200 cid:3 province:sh region:huadong table_name:table_name_test
-
-
Exemplo 4: Localize uma linha nas tabelas de dados table_name_test, table_name_test1 e table_name_test2 com base nos campos city e pop, e retorne os valores de todas as colunas dessa linha. No resultado retornado, apenas os dados da tabela table_name_test (a primeira usada para correspondência) serão exibidos.
-
Log bruto
city:sh name:maki pop:200 -
Regra de transformação
e_tablestore_map( ["city","pop"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", ["table_name_test","table_name_test1","table_name_test2"], output_table_name="table_name" ) -
Resultado
city:sh name:maki pop:200 cid:3 province:sh region:huadong table_name:table_name_test
-
-
Exemplo 5: Localize uma linha na tabela de dados com base nas chaves primárias pk1 e pk2 do índice secundário index1, e retorne o valor da coluna predefinida definedcol2 dessa linha. A coluna predefinida está especificada para o índice secundário index1.
-
Tabela de dados (index1)
pk1 (chave primária)
pk2 (chave primária)
definedcol2 (coluna predefinida)
definedcol3 (coluna predefinida)
pk1_1
pk2_1
definedcol2_1
definedcol3_1
pk1_2
pk2_2
definedcol2_2
definedcol3_2
-
Log bruto
pk1:pk1_1 pk2:pk2_1 -
Regra de transformação
e_tablestore_map( ["pk1","pk2"], "https://d00s0dxa****.cn-hangzhou.ots.aliyuncs.com", "LTA3****", "VIH9****", "d00s0dxa****", "index1", output_fields= ["definedcol2"], output_table_name="table_name", ) -
Resultado
pk1:pk1_1 pk2:pk2_1 definedcol2:definedcol2_1 table_name:index1
-
-
e_redis_map
A função e_redis_map enriquece um log bruto usando uma tabela de dados no ApsaraDB for Redis como tabela de dimensão.
-
Sintaxe
e_redis_map(field, output_field, host, port=6379, db=0, username=None, password=None, encoding="utf-8", max_retries=5, mode="fill-auto") -
Parâmetros
Parâmetro
Tipo
Obrigatório
Descrição
field
String
Sim
Campo do log bruto usado para mapear dados entre o log bruto e a tabela de dados. Se o log bruto não contiver o campo, nenhuma operação será executada nesse log.
output_field
String
Sim
Campo de saída.
host
String
Sim
Endpoint do banco de dados ApsaraDB for Redis.
username
String
Não
Nome de usuário da conta usada para conectar ao banco de dados ApsaraDB for Redis. Este parâmetro é vazio por padrão, indicando que nenhuma autenticação ocorre.
password
String
Não
Senha da conta usada para conectar ao banco de dados ApsaraDB for Redis. Este parâmetro é vazio por padrão, indicando que nenhuma autenticação ocorre.
port
Integer
Não
Porta do banco de dados ApsaraDB for Redis. Valor padrão: 6379.
db
Integer
Não
Nome do banco de dados ApsaraDB for Redis. Valor padrão: 0.
encoding
String
Não
Método de codificação dos dados no banco de dados ApsaraDB for Redis. Valor padrão: utf-8.
max_retries
Integer
Não
Número máximo de tentativas permitidas quando uma requisição de conexão ao banco de dados ApsaraDB for Redis falha. Valor padrão: 5.
Se a requisição de conexão falhar após atingir o número máximo de tentativas, a função ignorará o log atual no processo de transformação. As transformações subsequentes não serão afetadas.
O intervalo entre cada tentativa dobra em relação ao anterior. Os intervalos variam de 1s a 120s.
mode
String
Não
Modo de sobrescrita de campos. Valor padrão: fill-auto. Para mais informações, consulte Verificação de extração de campos e modos de sobrescrita.
-
Resposta
Retorna um log contendo um novo campo.
-
Exemplos
Os exemplos a seguir baseiam-se na tabela de dados abaixo no ApsaraDB for Redis.
ImportanteApenas valores do tipo string são suportados.
Chave
Valor
i1001
{ "name": "Orange", "price": 10 }
i1002
{ "name": "Apple", "price": 12 }
i1003
{ "name": "Mango", "price": 16 }
-
Exemplo 1: Localize um valor na tabela de dados com base no campo item e retorne esse valor. O nome de usuário e a senha da conta usada para conectar ao banco de dados ApsaraDB for Redis não estão especificados na regra de transformação.
-
Log bruto
item: i1002 count: 7 -
Regra de transformação
e_redis_map("item", "detail", host="r-bp1olrdor8353v4s.redis.rds.aliyuncs.com") -
Resultado
item: i1002 count: 7 detail: { "name": "Apple", "price": 12 }
-
-
Exemplo 2: Localize um valor na tabela de dados com base no campo item e retorne esse valor. O nome de usuário e a senha da conta usada para conectar ao banco de dados ApsaraDB for Redis estão especificados na regra de transformação.
-
Log bruto
item: i1003 count: 7 -
Regra de transformação
e_redis_map("item", "detail", host="r-bp1olrdor8353v4s****.redis.rds.aliyuncs.com", username="r-bp****", password="***") -
Resultado
item: i1003 count: 7 detail:{ "name": "Mango", "price": 16 }
-
-