Configure os destinos de saída para os conjuntos de dados produzidos por uma tarefa de transformação de dados (nova versão), incluindo o roteamento dinâmico para projetos ou Logstores e a atribuição de chave hash no nível do shard.
Visão geral dos conjuntos de dados
Uma tarefa de transformação de dados (nova versão) referencia conjuntos de dados definidos em regras SPL e os grava em um ou mais destinos de saída. Conjuntos de dados nomeados são referenciados pelo nome, enquanto conjuntos sem nome utilizam o identificador __UNNAMED__. Para obter mais informações sobre definições de conjuntos de dados na sintaxe SPL do Simple Log Service, consulte Referência Geral.
Exemplo
Neste exemplo, a tarefa de transformação de dados produz dois conjuntos de dados: valid e __UNNAMED__.
-- Output unnamed dataset __UNNAMED__
*
| where mode is null;
-- Define named dataset src, do not output
.let src = *
| where mode is not null;
-- Define dataset valid, do not output
.let valid = $src
| where mode = 'a'
| parse-regexp content, '(\S+)\s+(\S+)\s+(\S+)' as x, y, z
| project x, y, z;
-- Output named dataset valid
$valid;
-- Output unnamed dataset __UNNAMED__
$src
| where mode = 'b'
| parse-csv content as u, v
| project u, v;
Saída dinâmica para um projeto ou Logstore
Use regras SPL para rotear dinamicamente a saída para um projeto ou Logstore específico. Os campos reservados a seguir controlam esse roteamento:
|
Campo reservado |
Descrição |
|
|
Especifique o projeto de destino para a saída dinâmica. |
|
|
Especifique o Logstore de destino para a saída dinâmica. Aviso
Não configure o armazenamento de destino como o armazenamento de origem atual (configuração de mesma origem). Caso contrário, os logs podem ser gravados em loop, gerando custos adicionais de armazenamento e tráfego. Você é responsável pelo consumo de recursos e pelos custos incorridos. |
Exemplos
-
Exemplo 1: Especifique o projeto de destino do resultado da transformação de dados como o valor do campo
dst_project.| extend "__tag__:__sls_etl_output_project__"=dst_project
-
Exemplo 2: Defina o Logstore de destino do resultado da transformação de dados como uma string concatenada.
| extend "__tag__:__sls_etl_output_logstore__"=concat('log-', cast(status as VARCHAR))
Especificação de uma chave hash para saída
Use regras SPL para especificar uma chave hash que roteie os resultados da transformação de dados para um shard específico em um Logstore. Para obter mais informações sobre o roteamento de shards com chaves hash, consulte Gravar Logs.
__tag__:__sls_etl_output_hash_key__: Chave hash usada para rotear a saída para um shard específico no Logstore de destino.
Exemplo: Restringir intervalo de hash (recomendado para produção)
Em ambientes de produção, para acomodar um número fixo de partições de consumo downstream (como 256 ou 1.024), recomenda-se truncar o valor hash e preenchê-lo com um sufixo fixo para convergir as chaves hash para um intervalo específico.
Cenário: Convergência para 256 pontos de ancoragem de shard fixos
Trunque o hash MD5 para os primeiros 2 caracteres e preencha os 30 caracteres restantes com zeros. Essa abordagem garante a gravação dos dados sempre em 256 limites de hash fixos, independentemente do volume, o que facilita o processamento agregado na transformação de dados e melhora a eficiência do processamento.
| extend "__tag__:__sls_etl_output_hash_key__" = concat(substring(to_hex(md5(to_utf8(field))), 1, 2), '000000000000000000000000000000')