Este tópico descreve o uso das instruções de operação de campo e fornece exemplos.
project
Esta instrução retém campos correspondentes a um padrão especificado e renomeia campos selecionados. Durante a execução, o sistema processa primeiro todas as expressões de retenção de campo e, em seguida, as expressões de renomeação.
Os campos de tempo padrão __time__ e __time_ns_part__ são reservados e não podem ser renomeados ou sobrescritos. Para mais informações, consulte Campo de tempo.
Sintaxe
| project -wildcard <field-pattern>, <output>=<field>, ...
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
wildcard |
Bool |
Não |
Ativa a correspondência de padrões com curingas. O padrão é a correspondência exata de campos. Adicione este parâmetro para ative a correspondência com curingas. |
|
field-pattern |
FieldPattern |
Sim |
Nome do campo a reter ou combinação de nome de campo com caracteres curinga para processar todos os campos correspondentes. |
|
output |
Field |
Sim |
Novo nome do campo. Não é possível renomear vários campos para o mesmo campo de destino. Importante
Se o novo campo tiver o mesmo nome de um campo nos dados de entrada, consulte Retenção e sobrescrita de valores antigos e novos para entender a política de atribuição de valores. |
|
field |
Field |
Sim |
Nome original do campo a renomear.
|
Exemplos
-
Exemplo 1: Reter campos específicos.
* | project level, err_msg -
Exemplo 2: Renomear campos.
* | project log_level=level, err_msg -
Exemplo 3: Reter o campo com correspondência exata a
__tag__:*.* | project "__tag__:*"
project-away
Esta instrução remove campos correspondentes a um padrão especificado e retém todos os demais.
Por padrão, esta instrução retém os campos de tempo __time__ e __time_ns_part__. Para mais informações, consulte Campos de tempo.
Sintaxe
| project-away -wildcard <field-pattern>, ...
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
wildcard |
Bool |
Não |
Ativa a correspondência de padrões com curingas. O padrão é a correspondência exata de campos. Adicione este parâmetro para ative a correspondência com curingas. |
|
field-pattern |
FieldPattern |
Sim |
Nome do campo a remover ou combinação de nome de campo com caracteres curinga para processar todos os campos correspondentes. |
project-rename
Esta instrução renomeia campos específicos e mantém todos os outros inalterados.
Os campos de tempo padrão __time__ e __time_ns_part__ são reservados e não podem ser renomeados ou sobrescritos. Para mais informações, consulte Campos de tempo.
Sintaxe
| project-rename <output>=<field>, ...
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
output |
Field |
Sim |
Novo nome do campo. Não é possível renomear vários campos para o mesmo campo de destino. Importante
Se o novo campo tiver o mesmo nome de um campo nos dados de entrada, consulte Retenção e sobrescrita de valores antigos e novos para entender a política de atribuição de valores. |
|
field |
Field |
Sim |
Nome original do campo a renomear.
|
Exemplo
Renomeie campos específicos.
* | project-rename log_level=level, log_err_msg=err_msg
expand-values
Esta instrução expande a primeira camada de um objeto JSON em um campo especificado para gerar múltiplos resultados.
O tipo de dados dos campos de saída é VARCHAR. Se um campo de resultado tiver o mesmo nome de um campo de entrada, consulte Retenção e sobrescrita de valores para obter informações sobre a política de tratamento de valores.
Não é possível realizar operações nos campos de tempo
__time__ou__time_ns_part__. Para mais informações, consulte Campos de tempo.Esta instrução suporta transformação de dados na nova versão. Para diferentes cenários de uso da SPL, consulte Referência geral.
Sintaxe
| expand-values -path=<path> -limit=<limit> -keep <field> as <output>
Parâmetros
|
Parâmetro |
Tipo |
Obrigatório |
Descrição |
|
path |
JSONPath |
Não |
Especifica o caminho JSON no conteúdo do campo para localizar o conteúdo a expandir. O valor padrão é vazio, o que significa que todo o conteúdo do campo especificado é expandido diretamente. |
|
limit |
Integer |
Não |
Número máximo de entradas expandidas a partir de cada entrada de dados brutos. Valores válidos: 0 e 1 a 10. Valor padrão: 10. Nota
O tamanho acumulado dos valores expandidos para um único campo não pode exceder 50 MB. Quando limit é definido entre 1 e 10, o número de linhas expandidas é limitado por este valor. Nota
Quando limit é definido como 0, o número de linhas expandidas por campo é ilimitado. No entanto, o total de dados retornados em todos os campos e linhas tem um teto de aproximadamente 50 MB. Se esse limite for excedido, apenas os resultados parciais já processados serão retornados. Os valores individuais dos campos não são truncados. Nota
O valor que aciona o limite é incluído no resultado, portanto, os dados reais retornados podem exceder ligeiramente 50 MB. O truncamento devido ao limite ocorre silenciosamente e não gera nenhum erro ou aviso. |
|
keep |
Bool |
Não |
Defina se o campo original deve ser mantido após a expansão. Por padrão, o campo original não é retido. Adicione este parâmetro para manter o campo original. |
|
field |
Field |
Sim |
Nome do campo original a expandir. O tipo suportado é |
|
output |
Field |
Não |
Nome do campo de destino para a expansão. Se não for especificado, o resultado será enviado para o campo de entrada por padrão. A lógica de expansão para o conteúdo original funciona da seguinte forma: Array JSON: Expande cada elemento do array. Dicionário JSON: Expande cada par chave-valor do dicionário. Outros tipos JSON: Retorna o valor inicial. JSON inválido: Retorna |
Exemplos
-
Exemplo 1: Expandir um array para gerar múltiplos resultados de dados.
-
Instrução SPL
* | expand-values y -
Dados de entrada
x: 'abc' y: '[0,1,2]' -
Dados de saída
# Entry 1 x: 'abc' y: '0' # Entry 2 x: 'abc' y: '1' # Entry 3 x: 'abc' y: '2'
-
-
Exemplo 2: Expandir um dicionário para gerar múltiplos resultados de dados.
-
Instrução SPL
* | expand-values y -
Dados de entrada
x: 'abc' y: '{"a": 1, "b": 2}' -
Dados de saída
# Entry 1 x: 'abc' y: '{"a": 1}' # Entry 2 x: 'abc' y: '{"b": 2}'
-
-
Exemplo 3: Expandir o conteúdo de um caminho JSON específico e enviá-lo para um novo campo.
-
Instrução SPL
* | expand-values -path='$.body' -keep content as body -
Dados de entrada
content: '{"body": [0, {"a": 1, "b": 2}]}' -
Dados de saída
# Entry 1 content: '{"body": [1, 2]}' body: '0' # Entry 2 content: '{"body": [1, 2]}' body: '{"a": 1, "b": 2}'
-