

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

 Use `parse` para extraer datos de un campo de registro y crear un campo extraído que pueda procesar en su consulta. **`parse`** admite tanto el modo glob con caracteres comodín como expresiones regulares. Para obtener información acerca de la sintaxis de la expresión regular, consulte [Sintaxis de expresiones regulares (regex) compatibles](FilterAndPatternSyntax.md#regex-expressions).

 Puede analizar los campos JSON anidados con una expresión regular. 

**Ejemplo: análisis de un campo JSON anidado**

 El fragmento de código muestra cómo analizar un evento de registro JSON que se ha aplanado durante la incorporación. 

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

 El fragmento de código muestra una consulta con una expresión regular que extrae los valores de `fieldsA` y `fieldsB` con el objetivo de crear los campos extraídos `fld` y `array`. 

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

**Grupos de captura con nombres**

Cuando se usa **`parse`** con una expresión regular, puede usar grupos de captura con nombre para capturar un patrón en un campo. La sintaxis es `parse @message (?<Name>pattern)`

El siguiente ejemplo usa un grupo de captura en un registro de flujo de la VPC para extraer el ENI en un campo denominado `NetworkInterface`.

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

**nota**  
 Los eventos de registro JSON se aplanan durante la ingesta. Actualmente, no se admite el análisis de campos JSON anidados con una expresión glob. Solo puede analizar eventos de registro JSON que no incluyan más de 200 campos de eventos de registro. Cuando analice los campos JSON anidados, debe dar formato a la expresión regular de la consulta para que coincida con el formato de su evento de registro JSON. 

## Ejemplos del comando para analizar
<a name="CWL_QuerySyntax-parse-examples"></a>

**Utilice una expresión glob para extraer los campos `@user`, `@method` y `@latency` del campo de registro `@message` y devolver la latencia promedio para cada combinación única de `@method` y `@user`.** 

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

**Utilice una expresión regular para extraer los campos `@user2`, `@method2` y `@latency2` del campo de registro `@message` y devolver la latencia promedio para cada combinación única de `@method2` y `@user2`.**

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

**Extrae los campos `loggingTime`, `loggingType` y `loggingMessage`, filtra hasta los eventos de registro que contienen cadenas `ERROR` o `INFO` y, a continuación, muestra solo los campos `loggingMessage` y `loggingType` para los eventos que contienen una cadena `ERROR`.**

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