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

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

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

-
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)NotaTambé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"].
NotaSe 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.
NotaSe 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.
NotaSe 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.
NotaO 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.
NotaA 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.
NotaSe 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.
NotaSe 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_keyssã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.
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.