Este tópico descreve como usar funções de recurso para extrair dados de outro Logstore e enriquecer os logs de um Logstore.
Contexto
Um hotel armazena as informações pessoais dos hóspedes no Logstore user_logstore e os dados de check-in no Logstore check-in_logstore. O hotel precisa obter alguns campos do Logstore check-in_logstore e concatená-los aos campos do Logstore user_logstore. Para isso, use a função res_log_logstore_pull para extrair dados do Logstore check-in_logstore e a função e_table_map para mapear esses dados. Para obter mais informações sobre a função res_log_logstore_pull, consulte res_log_logstore_pull. Para obter mais informações sobre a função e_table_map, consulte e_table_map.
Transformação de dados
-
Dados brutos
-
Logstore user_logstore, usado para armazenar informações pessoais
topic:xxx city:xxx cid:12345 name:maki topic:xxx city:xxx cid:12346 name:vicky topic:xxx city:xxx cid:12347 name:mary -
Logstore check-in_logstore, usado para armazenar informações de check-in
time:1567038284 status:check in cid:12345 name:maki room_number:1111 time:1567038284 status:check in cid:12346 name:vicky room_number:2222 time:1567038500 status:check in cid:12347 name:mary room_number:3333 time:1567038500 status:leave cid:12345 name:maki room_number:1111
-
-
Regra de transformação
NotaA função res_log_logstore_pull permite definir um intervalo de tempo ou uma hora inicial para o enriquecimento de dados.
Se você definir um intervalo de tempo na regra de transformação, por exemplo, from_time=1567038284 and to_time=1567038500, o Simple Log Service extrairá apenas os dados recebidos nesse período para enriquecimento.
Se você definir uma hora inicial na regra de transformação, por exemplo, from_time="begin", o Simple Log Service extrairá todos os dados recebidos a partir do momento especificado para enriquecimento.
Para obter mais informações sobre os campos da função res_log_logstore_pull, consulte res_log_logstore_pull.
-
Função e_table_map
Essa função mapeia duas entradas de log com base no campo cid. O mapeamento é bem-sucedido quando os valores do campo cid são idênticos em ambas as entradas. O campo room_number e seu valor são retornados e concatenados à entrada de log no Logstore check-in_logstore.
e_table_map(res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, fields=["cid","room_number"], from_time="begin", ), "cid","room_number")
-
Resultado
-
Função e_table_map
topic:xxx city:xxx cid:12345 name:maki room_nuber:1111 topic:xxx city:xxx cid:12346 name:vicky room_number:2222 topic:xxx city:xxx cid:12347 name:mary room_number:3333
-
Configure regras de lista de permissões e lista de bloqueios para filtrar dados
-
Configurar uma regra de lista de permissões
-
Regra de transformação
Use o campo fetch_include_data para configurar uma regra de lista de permissões. Neste exemplo, a expressão fetch_include_data="room_number:1111" está incluída na função res_log_logstore_pull. Essa expressão indica que apenas as entradas de log cujo valor do campo room_number seja 1111 serão extraídas.
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_include_data="room_number:1111") -
Dados recuperados
status: check in cid:12345 name:maki room_number:1111 status:leave cid:12345 name:maki room_number:1111
-
-
Configurar uma regra de lista de bloqueios
-
Regra de transformação
Use o campo fetch_exclude_data para configurar uma regra de lista de bloqueios. Neste exemplo, a expressão fetch_exclude_data="room_number:1111" está incluída na função res_log_logstore_pull. Essa expressão indica que as entradas de log com valor 1111 no campo room_number serão descartadas.
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="room_number:1111") -
Dados recuperados
status:check in cid:12346 name:vicky room_number:2222 status:check in cid:12347 name:mary room_number:3333
-
-
Configurar regras de lista de bloqueios e lista de permissões
-
Regra de transformação
Se você configurar uma regra de lista de bloqueios e uma regra de lista de permissões, a regra de lista de bloqueios será aplicada primeiro, seguida pela regra de lista de permissões. Neste exemplo, a expressão fetch_exclude_data="time:1567038285",fetch_include_data="status:check in" está incluída na função res_log_logstore_pull. Essa expressão indica que as entradas de log com valor 1567038285 no campo time são descartadas primeiro; em seguida, as entradas com valor check in no campo status são extraídas.
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status"],from_time=1567038284,to_time=1567038500,fetch_exclude_data="time:1567038285",fetch_include_data="status:check in") -
Dados recuperados
status:check in cid:12345 name:maki room_number:1111 status:check in cid:12346 name:vicky room_number:2222 status:check in cid:12347 name:mary room_number:3333
-
Ative a manutenção de chave primária para extrair dados de Logstores de destino
Para descartar dados antes da transformação, ative o recurso de manutenção de chave primária. Por exemplo, suponha que você precise extrair dados de check-in de clientes que fizeram entrada, mas ainda não saíram, do Logstore check-in_logstore. Se uma entrada de log extraída contiver o campo status:leave, isso indica que o cliente fez o checkout. Defina o parâmetro primary_keys na função res_log_logstore_pull para impedir que essa entrada seja transformada.
Você pode definir um único campo como valor do parâmetro primary_keys. Esse campo deve existir no campo fields.
Antes de ativar a manutenção de chave primária, verifique se o Logstore de origem tem apenas um shard.
Se você ativar a manutenção de chave primária, não poderá definir o campo delete_data como None.
-
Regra de transformação
res_log_logstore_pull(endpoint, ak_id, ak_secret, project, logstore, ["cid","name","room_number","status","time"],from_time=1567038284,to_time=None,primary_keys="cid",delete_data="status:leave") -
Dados recuperados
O campo status:leave na entrada de log anterior indica que o cliente cujo name é maki fez o checkout. Portanto, essa entrada de log não é transformada.
time:1567038284 status:check in cid:12346 name:vicky room_number:2222 time:1567038500 status:check in cid:12347 name:mary room_number:3333