Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Extrai informações estruturadas de uma expressão de cadeia de caracteres e representa as informações em um formulário chave/valor.
Os seguintes modos de extração são suportados:
- delimitador especificado: extração com base em delimitadores especificados que determinam como chaves/valores e pares são separados uns dos outros.
- delimitador não especificado: Extração sem necessidade de especificar delimitadores. Qualquer caractere não alfanumérico é considerado um delimitador.
- Regex: Extração baseada em expressões regulares.
Sintaxe
Delimitador especificado
T|parse-kv Expressãowith(pair_delimiter=,kv_delimiter=KvDelimiter [ ,quote=QuoteChars ...,escape=[ EscapeChar ...]] ,greedy=true[ ])
Delimitador não especificado
T|with( [ quote=QuoteChars ...,escape=[ EscapeChar ...]])
Regex
Expressão parse-kvas( KeysList)with(regex= RegexPattern))
Saiba mais sobre as convenções de sintaxe.
Parâmetros
| Nome | Digitar | Obrigatória | Descrição |
|---|---|---|---|
| Expression | string |
✔️ | A expressão da qual extrair valores-chave. |
| Lista de chaves | string |
✔️ | Uma lista separada por vírgulas de nomes de chave e seus tipos de dados de valor. A ordem das chaves não precisa corresponder à ordem em que elas aparecem no texto. |
| Delimitador de pares | string |
Um delimitador que separa pares de valores-chave uns dos outros. | |
| KvDelimiter | string |
Um delimitador que separa chaves de valores. | |
| Caracteres de citação | string |
Um literal de cadeia de caracteres de um ou dois caracteres que representa aspas de abertura e fechamento com as quais o nome da chave ou o valor extraído pode ser encapsulado. O parâmetro pode ser repetido para especificar um conjunto separado de aspas de abertura/fechamento. | |
| EscapeChar | string |
Um literal de cadeia de caracteres de um caractere que descreve um caractere que pode ser usado para escapar caracteres especiais em um valor entre aspas. O parâmetro pode ser repetido se vários caracteres de escape forem usados. | |
| Padrão Regex | string |
Uma expressão regular que contém exatamente dois grupos de captura. O primeiro grupo representa o nome da chave e o segundo grupo representa o valor da chave. |
Devoluções
A expressão tabular de entrada original T, estendida com colunas por chaves especificadas a serem extraídas.
Observação
- Se uma chave não aparecer em um registro, o valor da coluna correspondente será
nullou uma cadeia de caracteres vazia, dependendo do tipo de coluna. - Somente as chaves listadas no operador são extraídas.
- A primeira aparição de uma chave é extraída e os valores subsequentes são ignorados.
- Quando você extrai chaves e valores, os espaços em branco à esquerda e à direita são ignorados.
Exemplos
Os exemplos nesta seção mostram como usar a sintaxe para ajudá-lo a começar.
Extração com delimitadores bem definidos
Nesta consulta, chaves e valores são separados por delimitadores bem definidos. Esses delímetros são caracteres de vírgula e dois pontos.
print str="ThreadId:458745723, Machine:Node001, Text: The service is up, Level: Info"
| parse-kv str as (Text: string, ThreadId:long, Machine: string) with (pair_delimiter=',', kv_delimiter=':')
| project-away str
Saída
| Texto | ThreadId | Computador |
|---|---|---|
| O serviço está ativo | 458745723 | Nó001 |
Extração com cotação de valor
Às vezes, os nomes ou valores de chave são agrupados entre aspas, o que permite que os próprios valores contenham caracteres delimitadores. Os exemplos a seguir mostram como um quote argumento é usado para extrair esses valores.
print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure="connection aborted" "event time"=2021-01-01T10:00:54'
| parse-kv str as (['event time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='"')
| project-away str
Saída
| horário do evento | src | dst | bytes | falha |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | conexão abortada |
Essa consulta usa aspas de abertura e fechamento diferentes:
print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure=(connection aborted) (event time)=(2021-01-01 10:00:54)'
| parse-kv str as (['event time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='()')
| project-away str
Saída
| horário do evento | src | dst | bytes | falha |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | conexão abortada |
Os próprios valores podem conter caracteres de aspas com escape adequado, como mostra o exemplo a seguir:
print str='src=10.1.1.123 dst=10.1.1.124 bytes=125 failure="the remote host sent \\"bye!\\"" time=2021-01-01T10:00:54'
| parse-kv str as (['time']:datetime, src:string, dst:string, bytes:long, failure:string) with (pair_delimiter=' ', kv_delimiter='=', quote='"', escape='\\')
| project-away str
Saída
| time | src | dst | bytes | falha |
|---|---|---|---|---|
| 2021-01-01 10:00:54.0000000 | 10.1.1.123 | 10.1.1.124 | 125 | O host remoto enviou "Tchau!" |
Extração no modo ganancioso
Há casos em que valores sem aspas podem conter delimitadores de pares. Nesse caso, use o greedy modo para indicar ao operador para verificar até a próxima aparição da chave (ou final da string) ao procurar o final do valor.
Os exemplos a seguir comparam como o operador funciona com e sem o greedy modo especificado:
print str='name=John Doe phone=555 5555 city=New York'
| parse-kv str as (name:string, phone:string, city:string) with (pair_delimiter=' ', kv_delimiter='=')
| project-away str
Saída
| name | phone | city |
|---|---|---|
| John | 555 | Novo |
print str='name=John Doe phone=555 5555 city=New York'
| parse-kv str as (name:string, phone:string, city:string) with (pair_delimiter=' ', kv_delimiter='=', greedy=true)
| project-away str
Saída
| name | phone | city |
|---|---|---|
| Júlio Silva | 555 5555 | Nova Iorque |
Extração sem delimitadores bem definidos
No exemplo a seguir, qualquer caractere não alfanumérico é considerado um delimitador válido:
print str="2021-01-01T10:00:34 [INFO] ThreadId:458745723, Machine:Node001, Text: Started"
| parse-kv str as (Text: string, ThreadId:long, Machine: string)
| project-away str
Saída
| Texto | ThreadId | Computador |
|---|---|---|
| Iniciado | 458745723 | Nó001 |
Os valores entre aspas e escape são permitidos neste modo, conforme mostrado no exemplo a seguir:
print str="2021-01-01T10:00:34 [INFO] ThreadId:458745723, Machine:Node001, Text: 'The service \\' is up'"
| parse-kv str as (Text: string, ThreadId:long, Machine: string) with (quote="'", escape='\\')
| project-away str
Saída
| Texto | ThreadId | Computador |
|---|---|---|
| O serviço ' está no ar | 458745723 | Nó001 |
Extração usando regex
Quando nenhum delimitador define a estrutura de texto o suficiente, a extração regular baseada em expressão pode ser útil.
print str=@'["referer url: https://hostname.com/redirect?dest=/?h=1234", "request url: https://hostname.com/?h=1234", "advertiser id: 24fefbca-cf27-4d62-a623-249c2ad30c73"]'
| parse-kv str as (['referer url']:string, ['request url']:string, ['advertiser id']: guid) with (regex=@'"([\w ]+)\s*:\s*([^"]*)"')
| project-away str
Saída
| URL de referência | URL da solicitação | ID do anunciante |
|---|---|---|
https://hostname.com/redirect?dest=/?h=1234 |
https://hostname.com/?h=1234 |
24FEFBCA-CF27-4D62-A623-249C2AD30C73 |