Todos os produtos
Search
Central de documentação

Simple Log Service:Funções de recurso

Última atualização: Jul 03, 2026

Este tópico descreve a sintaxe e os parâmetros das funções de recurso. Também são apresentados exemplos de uso dessas funções.

Funções

Importante

Ao chamar as funções de recurso listadas abaixo, é necessário configure o modo Advanced preview para obter os dados desejados. Para mais informações sobre como configure o modo Advanced preview, consulte Advanced preview.

Função

Descrição

res_local

Obtém os valores dos parâmetros avançados do job de transformação de dados atual.

Esta função pode ser combinada com outras funções. Para mais informações, consulte Enriquecer dados do ApsaraDB RDS for MySQL.

res_rds_mysql

Extrai dados de uma tabela específica em um banco de dados criado em uma instância do ApsaraDB RDS for MySQL ou obtém o resultado da execução de uma instrução SQL. Os dados e o resultado podem ser atualizados em intervalos regulares.

Esta função pode ser combinada com outras funções. Para mais informações, consulte Enriquecer dados do ApsaraDB RDS for MySQL.

res_log_logstore_pull

Busca dados de outro Logstore durante a transformação de dados em um Logstore. A extração de dados pode ocorrer de forma contínua.

Esta função pode ser combinada com outras funções. Para mais informações, consulte Extrair dados de um Logstore para enriquecer dados de log em outro Logstore.

res_oss_file

Recupera dados de um objeto em um bucket específico do Object Storage Service (OSS). Os dados podem ser atualizados em intervalos regulares.

Esta função pode ser combinada com outras funções. Para mais informações, consulte Extrair um arquivo CSV do OSS para enriquecer dados.

res_local

A função res_local obtém os valores dos parâmetros avançados do job de transformação de dados atual.

  • Sintaxe

    res_local(param, default=None, type="auto")
  • Parâmetros

    Parâmetro

    Tipo

    Obrigatório

    Descrição

    param

    String

    Sim

    A chave especificada em Advanced Parameter Settings para o job de transformação de dados atual.

    default

    String

    Não

    O valor retornado caso a chave especificada no parâmetro param não exista. Valor padrão: None.

    type

    String

    Não

    O formato dos dados de saída. Valores válidos:

    • auto: Os dados brutos são convertidos em uma string JSON. Se a conversão falhar, os dados brutos serão retornados. Este é o valor padrão.

    • JSON: Os dados brutos são convertidos em uma string JSON. Se a conversão falhar, o valor do parâmetro default será retornado.

    • raw: Os dados brutos são retornados.

  • Resposta

    Uma string JSON ou dados brutos são retornados com base nas configurações dos parâmetros.

    • Conversões bem-sucedidas

      Dados brutos

      Valor retornado

      Tipo de dado do valor retornado

      1

      1

      Integer

      1,2

      1,2

      Float

      true

      True

      Boolean

      false

      False

      Boolean

      "123"

      123

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

      List

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

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

      List

    • Conversões com falha

      A tabela a seguir apresenta alguns exemplos de conversões com falha. Os dados brutos listados não podem ser convertidos em strings JSON e, por isso, são retornados como strings.

      Dados brutos

      Valor retornado

      Descrição

      (1,2,3)

      "(1,2,3)"

      Tuplas não são suportadas. Use listas.

      True

      "True"

      Um valor do tipo de dado Boolean só pode ser true ou false. Os valores devem estar em minúsculas.

      {1: 2, 3: 4}

      "{1: 2, 3: 4}"

      Uma chave de dicionário só pode ser uma string.

  • Exemplos

    Obtenha a chave especificada em Advanced Parameter Settings e atribua o valor dessa chave ao parâmetro local.

    Em Advanced Parameter Settings, a chave é endpoint e o valor é hangzhou. Advanced Parameter Settings

    • Log bruto

      content: 1
    • Regra de transformação

      e_set("local", res_local('endpoint'))
    • Resultado

      content: 1
      local: hangzhou
  • Referências

    Esta função pode ser combinada com outras funções. Para mais informações, consulte Enriquecer dados do ApsaraDB RDS for MySQL.

res_rds_mysql

A função res_rds_mysql extrai dados de uma tabela específica em um banco de dados criado em uma instância do ApsaraDB RDS for MySQL ou obtém o resultado da execução de uma instrução SQL. O Log Service permite extrair dados usando os seguintes métodos:

Importante
  • Se você usar a função res_rds_mysql para extrair dados de um banco de dados criado em uma instância do ApsaraDB RDS for MySQL, crie uma lista de permissões na instância e adicione 0.0.0.0 à lista de permissões. Isso permite o acesso ao banco de dados a partir de todos os endereços IP. No entanto, essa configuração pode gerar riscos de segurança para o banco de dados. Caso prefira adicionar apenas o endereço IP do Log Service à lista de permissões, envie um ticket.

  • O Log Service acessa um banco de dados criado em uma instância do ApsaraDB RDS for MySQL por meio de um endpoint público ou interno da instância. Se utilizar um endpoint interno, configure os parâmetros avançados. Para mais informações, consulte Enriquecer dados do ApsaraDB RDS for MySQL.

  • Extrair todos os dados apenas uma vez

    Na primeira execução de um job de transformação de dados, o Log Service extrai todos os dados da tabela especificada e, em seguida, interrompe a extração. Recomendamos este método se o seu banco de dados não sofrer atualizações.

  • Extrair todos os dados em intervalos regulares

    Durante a execução de um job de transformação de dados, o Log Service extrai todos os dados da tabela especificada em intervalos regulares. Dessa forma, o Log Service sincroniza os dados com o seu banco de dados de maneira oportuna. Contudo, esse método exige um longo período de tempo. Recomendamos esta abordagem se o volume de dados do seu banco for menor ou igual a 2 GB e o valor do parâmetro refresh_interval for maior ou igual a 300 segundos. Pull all data

  • Extrair dados incrementais em intervalos regulares

    Ao executar um job de transformação de dados, o Log Service extrai apenas os dados incrementais com base no campo de carimbo de data/hora de um banco de dados especificado. Com esse método, o Log Service busca somente os dados recém-adicionados, tornando o processo eficiente. Defina o parâmetro refresh_interval como 1 segundo para sincronizar dados em questão de segundos. Recomendamos este método se o volume de dados do banco for grande, se houver atualizações frequentes ou se for necessária uma extração de dados ágil. Pull incremental data

  • Sintaxe

    res_rds_mysql(address="The address of the database from which data is pulled", username="The username used to connect to the database", password="The password used to connect to the database", database="The name of the database", table=None, sql=None, fields=None, fetch_include_data=None, fetch_exclude_data=None, refresh_interval=0, base_retry_back_off=1, max_retry_back_off=60, primary_keys=None, use_ssl=false, update_time_key=None, deleted_flag_key=None)
    Nota

    Também é possível usar a função res_rds_mysql para extrair dados de um banco de dados criado em um cluster do AnalyticDB for MySQL ou PolarDB for MySQL. Nesses cenários, basta substituir o endereço, o nome de usuário, a senha e o nome do banco de dados na regra de transformação pelos valores reais.

  • Parâmetros

    Parâmetro

    Tipo

    Obrigatório

    Descrição

    address

    String

    Sim

    O endpoint ou endereço IP do banco de dados ao qual você deseja se conectar. Se o número da porta não for 3306, especifique um valor no formato Endereço IP:Porta. Para mais informações, consulte Visualizar ou modificar endpoints e portas.

    username

    String

    Sim

    O nome de usuário usado para conectar-se ao banco de dados.

    password

    String

    Sim

    A senha usada para conectar-se ao banco de dados.

    database

    String

    Sim

    O nome do banco de dados ao qual você deseja se conectar.

    table

    String

    Sim

    O nome da tabela da qual você deseja extrair dados. Se o parâmetro sql estiver configurado, este parâmetro não será obrigatório.

    sql

    String

    Sim

    Use uma instrução SQL SELECT para recuperar todos os dados relevantes do banco de dados e carregá-los na memória de processamento. O SQL otimiza o uso de memória filtrando campos e linhas, o que reduz o espaço ocupado pela tabela na memória de processamento. Se o parâmetro table estiver configurado, este parâmetro não será obrigatório.

    fields

    Lista de strings

    Não

    A lista de strings ou lista de aliases de strings. Se você não configurar este parâmetro, todas as colunas retornadas para o parâmetro sql ou table serão usadas. Por exemplo, para renomear a coluna name na lista ["user_id", "province", "city", "name", "age"] para user_name, defina o parâmetro fields como ["user_id", "province", "city", ("name", "user_name"), ("nickname", "nick_name"), "age"].

    Nota

    Se você configurar os parâmetros sql, table e fields juntos, a instrução SQL no parâmetro sql será executada. Os parâmetros table e fields não terão efeito.

    fetch_include_data

    String

    Não

    A lista de permissões de campos. Logs cujos campos correspondem ao parâmetro fetch_include_data são mantidos. Logs cujos campos não correspondem a esse parâmetro são descartados.

    • Se você não configurar este parâmetro ou defini-lo como None, o recurso de lista de permissões de campos ficará desativado.

    • Se você definir este parâmetro com um campo e um valor de campo específicos, os logs que contêm esse campo e valor serão mantidos.

    fetch_exclude_data

    String

    Não

    A lista de bloqueios de campos. Logs cujos campos correspondem ao parâmetro fetch_exclude_data são descartados. Logs cujos campos não correspondem a esse parâmetro são mantidos.

    • Se você não configurar este parâmetro ou defini-lo como None, o recurso de lista de bloqueios de campos ficará desativado.

    • Se você definir este parâmetro com um campo e um valor de campo específicos, os logs que contêm esse campo e valor serão descartados.

    Nota

    Se você configurar ambos os parâmetros fetch_include_data e fetch_exclude_data, os dados serão extraídos primeiro com base na configuração do parâmetro fetch_include_data e, em seguida, com base na configuração do parâmetro fetch_exclude_data.

    refresh_interval

    String numérica ou número

    Não

    O intervalo no qual os dados são extraídos do ApsaraDB RDS for MySQL. Unidade: segundos. Valor padrão: 0. Esse valor indica que todos os dados são extraídos apenas uma vez.

    base_retry_back_off

    Número

    Não

    O intervalo no qual o sistema tenta extrair dados novamente após uma falha na extração. Valor padrão: 1. Unidade: segundos.

    max_retry_back_off

    Int

    Não

    O intervalo máximo entre duas tentativas consecutivas após uma falha na extração. Valor padrão: 60. Unidade: segundos. Recomendamos o uso do valor padrão.

    primary_keys

    String/Lista

    Não

    A chave primária no armazenamento de chave-valor da tabela de dimensões em memória. Se você configurar este parâmetro, os dados da tabela serão salvos na memória como um dicionário no formato Chave:Valor. Uma chave no dicionário corresponde ao valor do parâmetro primary_keys. Um valor no dicionário representa uma linha inteira de dados da tabela.

    Nota
    • O parâmetro primary_keys deve ser definido. Caso contrário, o desempenho será significativamente afetado e poderão ocorrer atrasos na tarefa.

    • O valor do parâmetro primary_keys deve existir nos campos extraídos da tabela.

    • O valor do parâmetro primary_keys diferencia maiúsculas de minúsculas.

    use_ssl

    Boolean

    Não

    Especifica se o protocolo SSL deve ser usado para conectar-se à instância do ApsaraDB RDS for MySQL. Valor padrão: false.

    Nota

    Se a criptografia SSL estiver ativada na instância do ApsaraDB RDS for MySQL, o Log Service se conectará à instância via SSL. No entanto, o certificado do servidor não é verificado. O certificado do servidor não pode ser usado para estabelecer conexões.

    update_time_key

    String

    Não

    O campo de tempo usado para extrair dados incrementais. Se você não configurar este parâmetro, todos os dados serão extraídos. Por exemplo, update_time em update_time_key="update_time" indica o campo de tempo de atualização dos dados no banco de dados. O campo de tempo suporta os seguintes tipos de dados: datetime, timestamp, integer, float e decimal. Certifique-se de que os valores do campo de tempo aumentem em ordem cronológica.

    Nota

    O Log Service extrai dados incrementais com base no campo de tempo. Certifique-se de que um índice esteja configurado para esse campo na tabela. Se o índice não estiver configurado, uma varredura completa da tabela será realizada. Além disso, um erro será relatado, indicando falha na extração de dados incrementais.

    deleted_flag_key

    String

    Não

    Os dados que não precisam ser transformados e são descartados durante a extração de dados incrementais. Por exemplo, se o valor de key em update_time_key="key" atender à seguinte condição, o valor será interpretado como dado excluído:

    • Boolean: true

    • Datetime e timestamp: não vazio

    • Char e varchar: 1, true, t, yes e y

    • Integer: diferente de zero

    Nota
    • Você deve configurar o parâmetro deleted_flag_key juntamente com o parâmetro update_time_key.

    • Se você configurar o parâmetro update_time_key, mas não configurar o parâmetro deleted_flag_key, nenhum dado será descartado durante a extração de dados incrementais.

    connector

    String

    Não

    O conector usado para conectar-se remotamente ao banco de dados. Valores válidos: mysql e pgsql. Valor padrão: mysql.

  • Resposta

    Uma tabela contendo várias colunas é retornada. As colunas são definidas pelo parâmetro fields.

  • Tratamento de erros

    Se ocorrer um erro durante a extração de dados, o erro será relatado, mas o job de transformação de dados continuará em execução. Novas tentativas são realizadas com base no valor do parâmetro base_retry_back_off. Por exemplo, o intervalo da primeira nova tentativa é de 1 segundo e ela falha. O intervalo da segunda tentativa é o dobro do primeiro. O processo continua até que o intervalo atinja o valor do parâmetro max_retry_back_off. Se o erro persistir, novas tentativas serão realizadas com base no valor do parâmetro max_retry_back_off. Se uma nova tentativa for bem-sucedida, o intervalo de tentativa será redefinido para o valor inicial, que é 1 segundo.

  • Exemplos

    • Extrair todos os dados

      • Exemplo 1: Extrair dados da tabela test_table no banco de dados test_db em intervalos de 300 segundos.

        res_rds_mysql(
            address="rm-uf6wjk5****mo.mysql.rds.aliyuncs.com",
            username="test_username",
            password="****",
            database="test_db",
            table="test_table",
            refresh_interval=300,
        )
      • Exemplo 2: Extrair dados da tabela test_table, excluindo os registros de dados cujo valor de status seja delete.

        res_rds_mysql(
            address="rm-uf6wjk5****mo.mysql.rds.aliyuncs.com",
            username="test_username",
            password="****",
            database="test_db",
            table="test_table",
            refresh_interval=300,
            fetch_exclude_data="'status':'delete'",
        )
      • Exemplo 3: Extrair os registros de dados cujo valor de status seja exit da tabela test_table.

        res_rds_mysql(
            address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com",
            username="test_username",
            password="****",
            database="test_db",
            table="test_table",
            refresh_interval=300,
            fetch_include_data="'status':'exit'",
        )
      • Exemplo 4: Extrair os registros de dados cujo valor de status seja exit da tabela test_table, excluindo os registros cujo valor de name seja aliyun.

        res_rds_mysql(
            address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com",
            username="test_username",
            password="****",
            database="test_db",
            table="test_table",
            refresh_interval=300,
            fetch_include_data="'status':'exit'",
            fetch_exclude_data="'name':'aliyun'",
        )
      • Exemplo 5: Usar o conector pgsql para conectar-se a um banco de dados Hologres e extrair dados da tabela test_table.

        res_rds_mysql(
            address="hgpostcn-cn-****-cn-hangzhou.hologres.aliyuncs.com:80",
            username="test_username",
            password="****",
            database="aliyun",
            table="test_table",
            connector="pgsql",
        )
      • Exemplo 6: Extrair dados usando o parâmetro primary_keys.

        Se você configurar o parâmetro primary_keys, seu valor será extraído como uma chave. Os dados extraídos da tabela são salvos na memória no formato {"10001":{"userid":"10001","city_name":"beijing","city_number":"12345"}}. Nesse caso, a extração de dados ocorre em alta velocidade. Recomendamos este método para extrair um grande volume de dados. Se você não configurar o parâmetro primary_keys, a função percorrerá a tabela linha por linha. Em seguida, a função extrairá os dados e os salvará na memória no formato [{"userid":"10001","city_name":"beijing","city_number":"12345"}]. Nesse cenário, a extração de dados é mais lenta, mas ocupa apenas uma pequena parte da memória. Recomendamos este método para extrair um pequeno volume de dados.

        • Tabela

          userid

          city_name

          city_number

          10001

          beijing

          12345

        • Log bruto

          # Data Record 1
          userid:10001
          gdp:1000
          
          # Data Record 2
          userid:10002
          gdp:800
        • Regra de transformação

          e_table_map(
              res_rds_mysql(
                  address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com",
                  username="test_username",
                  password="****",
                  database="test_db",
                  table="test_table",
                  primary_keys="userid",
              ),
              "userid",
              ["city_name", "city_number"],
          )
        • Resultado

          # Data Record 1
          userid:10001
          gdp:1000
          city_name: beijing
          city_number:12345
          # Data Record 2
          userid:10002
          gdp:800
    • Extrair dados incrementais

      • Exemplo 1: Extrair dados incrementais.

        Nota

        A extração de dados incrementais de uma tabela só é possível se as seguintes condições forem atendidas:

        • A tabela possui uma chave primária exclusiva e um campo de tempo, como os campos item_id e update_time.

        • Os parâmetros primary_keys, refresh_interval e update_time_key estão configurados.

        • Tabela

          item_id

          item_name

          price

          1001

          Orange

          10

          1002

          Apple

          12

          1003

          Mango

          16

        • Log bruto

          # Data Record 1
          item_id: 1001
          total: 100
          
          # Data Record 2
          item_id: 1002
          total: 200
          
          # Data Record 3
          item_id: 1003
          total: 300
        • Regra de transformação

          e_table_map(
              res_rds_mysql(
                  address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com",
                  username="test_username",
                  password="****",
                  database="test_db",
                  table="test_table",
                  primary_key="item_id",
                  refresh_interval=1,
                  update_time_key="update_time",
              ),
              "item_id",
              ["item_name", "price"],
          )
        • Resultado

          # Data Record 1
          item_id: 1001
          total: 100
          item_name: Orange
          price:10
          
          # Data Record 2
          item_id: 1002
          total: 200
          item_name: Apple
          price:12
          
          # Data Record 3
          item_id: 1003
          total: 300
          item_name: Mango
          price:16
      • Exemplo 2: Configurar o parâmetro deleted_flag_key para descartar dados específicos durante a extração de dados incrementais.

        • Tabela

          item_id

          item_name

          price

          update_time

          Is_deleted

          1001

          Orange

          10

          1603856138

          False

          1002

          Apple

          12

          1603856140

          False

          1003

          Mango

          16

          1603856150

          False

        • Log bruto

          # Data Record 1
          item_id: 1001
          total: 100
          
          # Data Record 2
          item_id: 1002
          total: 200
          
          # Data Record 3
          item_id: 1003
          total: 300
        • Regra de transformação

          e_table_map(
              res_rds_mysql(
                  address="rm-uf6wjk5***mo.mysql.rds.aliyuncs.com",
                  username="test_username",
                  password="****",
                  database="test_db",
                  table="test_table",
                  primary_key="item_id",
                  refresh_interval=1,
                  update_time_key="update_time",
                  deleted_flag_key="is_deleted",
              ),
              "item_id",
              ["item_name", "price"],
          )
        • Resultado

          A função res_rds_mysql extrai três registros de dados da tabela para a memória do servidor onde o Log Service está em execução. Esses registros são comparados com os registros existentes no Logstore de origem para verificar se há correspondência. Para descartar o registro de dados cujo item_id é 1001, localize o registro com item_id 1001 na tabela e altere o valor do campo Is_deleted para true. Dessa forma, o registro de dados 1001 será descartado na próxima atualização da tabela de dimensões em memória.

          # Data Record 2
          item_id: 1002
          total: 200
          item_name: Apple
          price:12
          
          # Data Record 3
          item_id: 1003
          total: 300
          item_name: Mango
          price:1
  • Referências

    Esta função pode ser combinada com outras funções. Para mais informações, consulte Enriquecer dados do ApsaraDB RDS for MySQL.

res_log_logstore_pull

A função res_log_logstore_pull extrai dados de outro Logstore quando você transforma dados em um Logstore.

  • Sintaxe

    res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, fields, from_time="begin", to_time=None, fetch_include_data=None, fetch_exclude_data=None, primary_keys=None, fetch_interval=2, delete_data=None,  base_retry_back_off=1, max_retry_back_off=60, ttl=None, role_arn=None)
  • Parâmetros

    Parâmetro

    Tipo

    Obrigatório

    Descrição

    endpoint

    String

    Sim

    O endpoint. Para mais informações, consulte Endpoint. Por padrão, um endpoint HTTPS é usado. Você também pode usar um endpoint HTTP. Em casos especiais, talvez seja necessário usar uma porta diferente da porta 80 ou 443.

    ak_id

    String

    Sim

    O AccessKey ID da sua conta Alibaba Cloud. Para garantir a segurança dos dados, recomendamos configure este parâmetro em Advanced Parameter Settings. Para mais informações sobre como configure os parâmetros avançados, consulte Criar um job de transformação de dados.

    ak_secret

    String

    Sim

    O AccessKey secret da sua conta Alibaba Cloud. Para garantir a segurança dos dados, recomendamos configure este parâmetro em Advanced Parameter Settings. Para mais informações sobre como configure os parâmetros avançados, consulte Criar um job de transformação de dados.

    project

    String

    Sim

    O nome do projeto do qual você deseja extrair dados.

    logstore

    String

    Sim

    O nome do Logstore do qual você deseja extrair dados.

    fields

    Lista de strings

    Sim

    A lista de strings ou lista de aliases de strings. Se um log não contiver um campo especificado, o valor desse campo será uma string vazia. Por exemplo, para renomear a coluna name na lista ["user_id", "province", "city", "name", "age"] para user_name, defina este parâmetro como ["user_id", "province", "city", ("name", "user_name"), ("nickname", "nick_name"), "age"].

    from_time

    String

    Não

    A hora do servidor em que a primeira extração de dados do Logstore começa. Valor padrão: begin. Esse valor indica que o Log Service começa a extrair dados a partir do primeiro log. Os seguintes formatos de hora são suportados:

    • Carimbo de data/hora UNIX.

    • String de tempo.

    • String personalizada, como begin ou end.

    • Expressão: a hora retornada pela função dt_. Por exemplo, a função dt_totimestamp(dt_truncate(dt_today(tz="Asia/Shanghai"), day=op_neg(-1))) retorna a hora de início da extração de dados, que corresponde a um dia antes da hora atual. Se a hora atual for 2019-5-5 10:10:10 (UTC+8), a hora retornada será 2019-5-4 10:10:10 (UTC+8).

    to_time

    String

    Não

    A hora do servidor em que a primeira extração de dados do Logstore termina. Valor padrão: None. Esse valor indica que o Log Service para de extrair dados no último log. Os seguintes formatos de hora são suportados:

    • Carimbo de data/hora UNIX.

    • String de tempo.

    • String personalizada, como begin ou end.

    • Expressão: a hora retornada pela função dt_.

    Se você não configurar este parâmetro ou defini-lo como None, os dados serão extraídos dos logs mais recentes de forma contínua.

    Nota

    Se você definir este parâmetro com um ponto no tempo posterior à hora atual, apenas os dados existentes no Logstore serão extraídos. Novos dados não serão extraídos.

    fetch_include_data

    String

    Não

    A lista de permissões de campos. Logs cujos campos correspondem ao parâmetro fetch_include_data são mantidos. Logs cujos campos não correspondem a esse parâmetro são descartados.

    • Se você não configurar este parâmetro ou defini-lo como None, o recurso de lista de permissões de campos ficará desativado.

    • Se você definir este parâmetro com um campo e um valor de campo específicos, os logs que contêm esse campo e valor serão mantidos.

    fetch_exclude_data

    String

    Não

    A lista de bloqueios de campos. Logs cujos campos correspondem ao parâmetro fetch_exclude_data são descartados. Logs cujos campos não correspondem a esse parâmetro são mantidos.

    • Se você não configurar este parâmetro ou defini-lo como None, o recurso de lista de bloqueios de campos ficará desativado.

    • Se você definir este parâmetro com um campo e um valor de campo específicos, os logs que contêm esse campo e valor serão descartados.

    Nota

    Se você configurar tanto os parâmetros de lista de bloqueios quanto os de lista de permissões, os logs cujos campos corresponderem ao parâmetro da lista de bloqueios serão descartados primeiro e, em seguida, os logs restantes cujos campos corresponderem ao parâmetro da lista de permissões serão mantidos.

    primary_keys

    Lista de strings

    Não

    A lista de campos de chave primária usados para manter uma tabela. Se você alterar o nome de um campo de chave primária usando o parâmetro fields, use o novo nome para especifique o campo de chave primária neste parâmetro.

    Nota
    • O valor do parâmetro primary_keys pode conter apenas as strings de valor único especificadas no valor do parâmetro fields.

    • Este parâmetro é válido apenas quando existe um único shard no Logstore do qual os dados são extraídos.

    • O parâmetro primary_keys deve ser definido. Caso contrário, o desempenho será significativamente afetado e poderão ocorrer atrasos na tarefa.

    • O valor do parâmetro primary_keys diferencia maiúsculas de minúsculas.

    fetch_interval

    Int

    Não

    O intervalo entre duas solicitações consecutivas de extração de dados quando a extração ocorre de forma contínua. Valor padrão: 2. Unidade: segundos. O valor deve ser maior ou igual a 1 segundo.

    delete_data

    String

    Não

    A operação para excluir dados da tabela. Registros de dados que atendem a condições especificadas e contêm o valor de primary_keys são excluídos. Para mais informações, consulte Sintaxe de string de consulta.

    base_retry_back_off

    Número

    Não

    O intervalo no qual o sistema tenta extrair dados novamente após uma falha na extração. Valor padrão: 1. Unidade: segundos.

    max_retry_back_off

    Int

    Não

    O intervalo máximo entre duas tentativas consecutivas após uma falha na extração. Valor padrão: 60. Unidade: segundos. Recomendamos o uso do valor padrão.

    ttl

    Int

    Não

    O número de segundos usado para determinar o intervalo de extração contínua de dados. A extração de dados começa quando os dados de log são gerados e termina ttl segundos após a geração desses dados. Unidade: segundos. Valor padrão: None. Esse valor indica que todos os dados de log são extraídos.

    role_arn

    String

    Não

    O Alibaba Cloud Resource Name (ARN) da função RAM utilizada. A função RAM deve ter permissões de leitura no Logstore do qual os dados são extraídos. No console RAM, visualize o ARN de uma função RAM na seção Basic Information na página de detalhes da função. Exemplo: acs:ram::137944:role/role-a. Para mais informações sobre como obter o ARN de uma função RAM, consulte Visualizar uma função RAM.

  • Resposta

    Uma tabela contendo várias colunas é retornada.

  • Tratamento de erros

    Se ocorrer um erro durante a extração de dados, o erro será relatado, mas o job de transformação de dados continuará em execução. Novas tentativas são realizadas com base no valor do parâmetro base_retry_back_off. Por exemplo, o intervalo da primeira nova tentativa é de 1 segundo e ela falha. O intervalo da segunda tentativa é o dobro do primeiro. O processo continua até que o intervalo atinja o valor do parâmetro max_retry_back_off. Se o erro persistir, novas tentativas serão realizadas com base no valor do parâmetro max_retry_back_off. Se uma nova tentativa for bem-sucedida, o intervalo de tentativa será redefinido para o valor inicial, que é 1 segundo.

  • Exemplos

    • Neste exemplo, os dados dos campos key1 e key2 são extraídos do Logstore test_logstore do projeto test_project. A extração de dados começa quando os dados de log são gravados no Logstore e termina quando a operação de gravação é concluída. Os dados são extraídos apenas uma vez.

      res_log_logstore_pull(
          "cn-hangzhou.log.aliyuncs.com",
          "LT****Gw",
          "ab****uu",
          "test_project",
          "test_logstore",
          ["key1", "key2"],
          from_time="begin",
          to_time="end",
      )
    • Neste exemplo, os dados dos campos key1 e key2 são extraídos do Logstore test_logstore do projeto test_project. A extração de dados começa quando os dados de log são gravados no Logstore e termina quando a operação de gravação é concluída. Os dados são extraídos continuamente em intervalos de 30 segundos.

      res_log_logstore_pull(
          "cn-hangzhou.log.aliyuncs.com",
          "LT****Gw",
          "ab****uu",
          "test_project",
          "test_logstore",
          ["key1", "key2"],
          from_time="begin",
          to_time=None,
          fetch_interval=30,
      )
    • Neste exemplo, uma lista de bloqueios é configurada para ignorar os registros de dados que contêm key1:value1 durante a extração de dados de um Logstore.

      res_log_logstore_pull(
          "cn-hangzhou.log.aliyuncs.com",
          "LT****Gw",
          "ab****uu",
          "test_project",
          "test_logstore",
          ["key1", "key2"],
          from_time="begin",
          to_time=None,
          fetch_interval=30,
          fetch_exclude_data="key1:value1",
      )
    • Neste exemplo, uma lista de permissões é configurada para extrair os registros de dados que contêm key1:value1 de um Logstore.

      res_log_logstore_pull(
          "cn-hangzhou.log.aliyuncs.com",
          "LT****Gw",
          "ab****uu",
          "test_project",
          "test_logstore",
          ["key1", "key2"],
          from_time="begin",
          to_time=None,
          fetch_interval=30,
          fetch_include_data="key1:value1",
      )
    • Neste exemplo, os dados dos campos key1 e key2 são extraídos do Logstore test_logstore do projeto test_project. A extração de dados começa quando os dados de log são gerados e termina 40.000.000 segundos após a geração desses dados.

      res_log_logstore_pull(
          "cn-hangzhou.log.aliyuncs.com",
          "LTAI*****Cajvr",
          "qO0Tp*****jJ9",
          "test_project",
          "test_logstore",
          fields=["key1","key2"],
          ttl="40000000"
      )
    • Neste exemplo, os dados dos campos key1 e key2 são extraídos do Logstore test-logstore do projeto project-test1. A função vinculada ao serviço do Log Service é usada para autorização. A extração de dados começa quando os dados de log são gravados no Logstore e termina quando a operação de gravação é concluída. Os dados são extraídos apenas uma vez.

      res_log_logstore_pull(
          "pub-cn-hangzhou-staging-intranet.log.aliyuncs.com",
          "",
          "",
          "project-test1",
          "test-logstore",
          ["key1", "key2"],
          from_time="2022-7-27 10:10:10 8:00",
          to_time="2022-7-27 14:30:10 8:00",
          role_arn="acs:ram::***:role/aliyunserviceroleforslsaudit",
      )
                                  
    • Neste exemplo, os dados dos campos key1 e key2 são extraídos do Logstore test-logstore do projeto project-test1. Uma função padrão é usada para autorização. A extração de dados começa quando os dados de log são gravados no Logstore e termina quando a operação de gravação é concluída. Os dados são extraídos apenas uma vez.

      res_log_logstore_pull(
          "cn-chengdu.log.aliyuncs.com",
          "",
          "",
          "project-test1",
          "test-logstore",
           ["key1", "key2"],
          from_time="2022-7-21 10:10:10 8:00",
          to_time="2022-7-21 10:30:10 8:00",
          role_arn="acs:ram::***:role/aliyunlogetlrole",
      )
  • Referências

    Esta função pode ser combinada com outras funções. Para mais informações, consulte Extrair dados de um Logstore para enriquecer dados de log em outro Logstore.

res_oss_file

A função res_oss_file extrai dados de um objeto em um bucket OSS especificado. Os dados podem ser atualizados em intervalos regulares.

Nota

Recomendamos usar um projeto do Log Service que resida na mesma região do bucket OSS. Dessa forma, os dados do objeto no bucket podem ser extraídos pela rede interna da Alibaba Cloud. Uma rede interna é estável e rápida.

  • Sintaxe

    res_oss_file(endpoint, ak_id, ak_key, bucket, file, format='text', change_detect_interval=0, base_retry_back_off=1, max_retry_back_off=60, encoding='utf8', error='ignore')
  • Parâmetros

    Parâmetro

    Tipo

    Obrigatório

    Descrição

    endpoint

    String

    Sim

    O endpoint do bucket OSS. Para mais informações, consulte Regiões e endpoints. Por padrão, um endpoint HTTPS é usado. Você também pode usar um endpoint HTTP. Em casos especiais, talvez seja necessário usar uma porta diferente da porta 80 ou 443.

    ak_id

    String

    Sim

    O AccessKey ID da sua conta Alibaba Cloud. Para garantir a segurança dos dados, recomendamos configure este parâmetro em Advanced Parameter Settings. Para mais informações sobre como configure os parâmetros avançados, consulte Criar um job de transformação de dados.

    ak_key

    String

    Sim

    O AccessKey secret da sua conta Alibaba Cloud. Para garantir a segurança dos dados, recomendamos configure este parâmetro em Advanced Parameter Settings. Para mais informações sobre como configure os parâmetros avançados, consulte Criar um job de transformação de dados.

    bucket

    String

    Sim

    O nome do bucket OSS do qual você deseja extrair dados.

    file

    String

    Sim

    O caminho para o objeto do qual você deseja extrair dados. Exemplo: test/data.txt. Não insira uma barra (/) no início do caminho.

    format

    String

    Sim

    O formato do arquivo de saída. Valores válidos:

    • Text: formato de texto

    • Binary: formato de fluxo de bytes

    change_detect_interval

    String

    Não

    O intervalo no qual o Log Service extrai os dados do objeto do OSS. Unidade: segundos. O sistema verifica se o objeto foi atualizado durante a extração de dados. Se o objeto tiver sido atualizado, os dados incrementais serão extraídos. Valor padrão: 0. Esse valor indica que nenhum dado incremental é extraído. Todos os dados são extraídos apenas uma vez quando a função é chamada.

    base_retry_back_off

    Número

    Não

    O intervalo no qual o sistema tenta extrair dados novamente após uma falha na extração. Valor padrão: 1. Unidade: segundos.

    max_retry_back_off

    Int

    Não

    O intervalo máximo entre duas tentativas consecutivas após uma falha na extração. Valor padrão: 60. Unidade: segundos. Recomendamos o uso do valor padrão.

    encoding

    String

    Não

    O formato de codificação. Se você definir o parâmetro format como Text, este parâmetro será automaticamente definido como utf8.

    error

    String

    Não

    O método usado para lidar com erros. Este parâmetro é válido apenas quando a mensagem UnicodeError é relatada. Valores válidos:

    • ignore: O sistema ignora os dados com formato inválido e continua a codificar os dados.

    • xmlcharrefreplace: O sistema usa referências de caracteres XML apropriadas para substituir os caracteres que não podem ser codificados.

    Para mais informações, consulte Error Handlers.

    decompress

    String

    Não

    Especifica se o objeto deve ser descompactado. Valores válidos:

    • None: O objeto não é descompactado. Este é o valor padrão.

    • gzip: O objeto é descompactado usando gzip.

  • Resposta

    Os dados do objeto são retornados no formato de fluxo de bytes ou texto.

  • Tratamento de erros

    Se ocorrer um erro durante a extração de dados, o erro será relatado, mas o job de transformação de dados continuará em execução. Novas tentativas são realizadas com base no valor do parâmetro base_retry_back_off. Por exemplo, o intervalo da primeira nova tentativa é de 1 segundo e ela falha. O intervalo da segunda tentativa é o dobro do primeiro. O processo continua até que o intervalo atinja o valor do parâmetro max_retry_back_off. Se o erro persistir, novas tentativas serão realizadas com base no valor do parâmetro max_retry_back_off. Se uma nova tentativa for bem-sucedida, o intervalo de tentativa será redefinido para o valor inicial, que é 1 segundo.

  • Exemplos

    • Exemplo 1: Extrair dados JSON do OSS.

      • Dados JSON

        {
          "users": [
            {
                "name": "user1",
                "login_historys": [
                  {
                    "date": "2019-10-10 0:0:0",
                    "login_ip": "203.0.113.10"
                  },
                  {
                    "date": "2019-10-10 1:0:0",
                    "login_ip": "203.0.113.10"
                  }
                ]
            },
            {
                "name": "user2",
                "login_historys": [
                  {
                    "date": "2019-10-11 0:0:0",
                    "login_ip": "203.0.113.20"
                  },
                  {
                    "date": "2019-10-11 1:0:0",
                    "login_ip": "203.0.113.30"
                  },
                  {
                    "date": "2019-10-11 1:1:0",
                    "login_ip": "203.0.113.50"
                  }
                ]
            }
          ]
        }
      • Log bruto

        content: 123
      • Regra de transformação

        e_set(
            "json_parse",
            json_parse(
                res_oss_file(
                    endpoint="http://oss-cn-hangzhou.aliyuncs.com",
                    ak_id="LT****Gw",
                    ak_key="ab****uu",
                    bucket="log-etl-staging",
                    file="testjson.json",
                )
            ),
        )
      • Resultado

        content: 123
            prjson_parse: 
        '{
          "users": [
            {
                "name": "user1",
                "login_historys": [
                  {
                    "date": "2019-10-10 0:0:0",
                    "login_ip": "203.0.113.10"
                  },
                  {
                    "date": "2019-10-10 1:0:0",
                    "login_ip": "203.0.113.10"
                  }
                ]
            },
            {
                "name": "user2",
                "login_historys": [
                  {
                    "date": "2019-10-11 0:0:0",
                    "login_ip": "203.0.113.20"
                  },
                  {
                    "date": "2019-10-11 1:0:0",
                    "login_ip": "203.0.113.30"
                  },
                  {
                    "date": "2019-10-11 1:1:0",
                    "login_ip": "203.0.113.50"
                  }
                ]
            }
          ]
        }'
    • Exemplo 2: Extrair conteúdo de texto do OSS.

      • Conteúdo de texto

        Test bytes
      • Log bruto

        content: 123
      • Regra de transformação

        e_set(
            "test_txt",
            res_oss_file(
                endpoint="http://oss-cn-hangzhou.aliyuncs.com",
                ak_id="LT****Gw",
                ak_key="ab****uu",
                bucket="log-etl-staging",
                file="test.txt",
            ),
        )
      • Resultado

        content: 123
        test_txt: Test bytes
    • Exemplo 3: Extrair dados de um objeto OSS compactado e descompactar o objeto.

      • Conteúdo do objeto compactado

        Test bytes\nupdate\n123
      • Log bruto

        content:123
      • Regra de transformação

        e_set(
            "text",
            res_oss_file(
                endpoint="http://oss-cn-hangzhou.aliyuncs.com",
                ak_id="LT****Gw",
                ak_key="ab****uu",
                bucket="log-etl-staging",
                file="test.txt.gz",
                format="binary",
                change_detect_interval=30,
                decompress="gzip",
            ),
        )
      • Resultado

        content:123
        text: Test bytes\nupdate\n123
    • Exemplo 4: Acessar um objeto em um bucket OSS cuja ACL é public-read-write. Nenhum par de AccessKey é usado.

      • Conteúdo do objeto compactado

        Test bytes
      • Log bruto

        content:123
      • Regra de transformação

        e_set(
            "test_txt",
            res_oss_file(
                endpoint="http://oss-cn-hangzhou.aliyuncs.com",
                bucket="log-etl-staging",
                file="test.txt",
            ),
        )
      • Resultado

        content: 123
        test_txt: Test bytes
  • Referências

    Esta função pode ser combinada com outras funções. Para mais informações, consulte Extrair um arquivo CSV do OSS para enriquecer dados.