

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# parse
<a name="CWL_QuerySyntax-Parse"></a>

 Use `parse` para extrair dados de um campo de log e criar um campo extraído que pode ser processado na consulta. **`parse`** é compatível tanto com o modo glob usando curingas quanto com as expressões regulares. Para obter informações sobre a sintaxe das expressões regulares, consulte [Sintaxe de expressões regulares (regex) compatíveis](FilterAndPatternSyntax.md#regex-expressions).

 Você pode analisar campos JSON aninhados com uma expressão regular. 

**Exemplo: análise de um campo JSON aninhado**

 O trecho de código mostra como analisar um evento de logs JSON que foi nivelado durante a ingestão. 

```
{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}
```

 O trecho de código mostra uma consulta com uma expressão regular que extrai os valores de `fieldsA` e `fieldsB` para criar os campos extraídos `fld` e `array`. 

```
parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array
```

**Grupos de captura nomeados**

Quando você usa **`parse`** com uma expressão regular, pode usar grupos de captura nomeados para capturar um padrão para um campo. A sintaxe é `parse @message (?<Name>pattern)`

O exemplo a seguir usa um grupo de captura em um log de fluxo da VPC para extrair o ENI para um campo denominado `NetworkInterface`.

```
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
```

**nota**  
 Os eventos de logs JSON são nivelados durante a ingestão. Atualmente, não é possível analisar campos JSON aninhados com uma expressão global. Você só pode analisar eventos de logs JSON que incluam no máximo 200 campos de eventos de logs. Ao analisar campos JSON aninhados, você deve formatar a expressão regular em sua consulta para que corresponda ao formato do seu evento de logs JSON. 

## Exemplos do comando de análise
<a name="CWL_QuerySyntax-parse-examples"></a>

**Use uma expressão de glob para extrair os campos `@user`, `@method` e `@latency` do campo de log `@message` e retornar a latência média para cada combinação exclusiva de `@method` e `@user`.** 

```
parse @message "user=*, method:*, latency := *" as @user,
    @method, @latency | stats avg(@latency) by @method,
    @user
```

**Use uma expressão regular para extrair os campos `@user2`, `@method2` e `@latency2` do campo de log `@message` e retornar a latência média para cada combinação exclusiva de `@method2` e `@user2`.**

```
parse @message /user=(?<user2>.*?), method:(?<method2>.*?),
    latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, 
    @user2
```

**Extrai os campos `loggingTime`, `loggingType` e `loggingMessage`, aplica o filtro para eventos de logs que contêm strings `ERROR` ou `INFO` e exibe apenas os campos `loggingMessage` e `loggingType` para eventos que contêm uma string `ERROR`.**

```
FIELDS @message
    | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage
    | FILTER loggingType IN ["ERROR", "INFO"]
    | DISPLAY loggingMessage, loggingType = "ERROR" as isError
```