Todos os produtos
Search
Central de documentação

Simple Log Service:Funções de mapeamento e enriquecimento

Última atualização: Jul 03, 2026

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

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.

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

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.

e_tablestore_map

Enriquece um log bruto usando uma tabela de dados no Tablestore como tabela de dimensão.

e_redis_map

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.

    Nota

    Se 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.

    Nota

    Se o dicionário de dados contiver uma chave asterisco (), o parâmetro missing torna-se inválido, pois o asterisco () tem prioridade sobre o parâmetro missing.

    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:  500
        status:  400
        status:  200
      • Regra de transformação

        e_dict_map({"400": "Error", "200": "Success", "*": "Other"}, "status", "message")
      • Resultado

        status:  500
        message: Other
        status:  400
        message: Error
        status:  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.

    Nota

    Ao usar as funções de recurso res_rds_mysql e res_log_logstore_pull como fontes de dados, defina o parâmetro primary_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âmetro primary_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 missing como 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.

    Nota

    Se a tabela contiver uma coluna asterisco (), o parâmetro missing torna-se inválido, pois o asterisco () tem prioridade sobre o parâmetro missing.

    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.

    Nota

    Você 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.

    Nota

    Caso 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ão province: 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.

    Importante

    Apenas 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
          }