

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

`parse`À utiliser pour extraire des données d'un champ de journal et créer des champs extraits que vous pouvez traiter dans votre requête. La `parse` commande prend en charge quatre modes : expressions globales, expressions régulières, logfmt et CSV.

S'il `fieldName` est omis, il `@message` est utilisé par défaut. Vous pouvez effectuer une analyse à partir de n'importe quel champ nommé en spécifiant le nom du champ comme premier argument.

Si un événement du journal ne correspond pas au modèle spécifié, il apparaît toujours dans les résultats, mais sans les champs extraits.

## Mode globe
<a name="CWL_QuerySyntax-parse-glob"></a>

Utilisez des caractères génériques (`*`) comme espaces réservés pour les valeurs que vous souhaitez extraire et attribuez-les à des champs nommés avec. `as`

**Syntaxe**

```
parse {{fieldName}} "{{pattern}}" as {{alias1}}, {{alias2}}
```

Le nombre de `*` caractères génériques doit être égal au nombre d'alias.

**Exemples**

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

```
parse @logStream "*/*/*/*" as env, service, instance, shard
| stats count(*) by env, service
```

**Analyse en chaîne**

Extrayez un champ, puis analysez davantage le champ extrait.

```
parse @message "url=*" as url
| parse url "/api/*/users/*" as apiVersion, userId
| display apiVersion, userId
```

## Mode Regex
<a name="CWL_QuerySyntax-parse-regex"></a>

Utilisez une expression régulière avec des groupes de capture nommés pour extraire des champs. Pour plus d'informations sur la syntaxe des expressions régulières, consultez[Syntaxe des expressions régulières (regex) prise en charge](FilterAndPatternSyntax.md#regex-expressions).

**Syntaxe**

```
parse {{fieldName}} /{{regex}}/
```

Utilisez des groupes de capture nommés `(?<{{name}}>...)` pour définir les champs extraits.

**Exemples**

**Utiliser des groupes de capture nommés pour extraire des champs**

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

**Utiliser un groupe de capture nommé pour extraire l'ENI d'un journal de flux VPC**

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

**Multi-match mode**

Utilisez le mode multicorrespondance pour extraire toutes les correspondances d'une expression régulière d'un champ, en produisant plusieurs lignes par événement de journal. Ajoutez le mot-clé `multi` après le modèle regex.

**Syntaxe**

```
parse {{fieldName}} /{{regex}}/ multi
```

**Exemples**

**Extraire toutes les adresses IP d'une ligne de journal (multicorrespondance)**

```
parse @message /(\d+\.\d+\.\d+\.\d+)/ as ip_addr multi
| stats count(*) by ip_addr
```

## Mode Logfmt
<a name="CWL_QuerySyntax-parse-logfmt"></a>

`parse logfmt`À utiliser pour analyser les lignes de journal au format logfmd en paires clé-valeur. Logfmt est un format de journalisation structuré dans lequel chaque ligne contient des paires séparées par des espaces`key=value`.

**Syntaxe**

```
parse {{fieldName}} logfmt as {{alias}}
```

Le résultat est une carte à laquelle vous pouvez accéder à l'aide d'une notation par points (par exemple`lf.level`,,`lf.msg`).

**Exemples**

```
parse @message logfmt as lf
| filter lf.level = "error"
| display lf.msg, lf.duration
```

```
parse @message logfmt as lf
| stats count(*) by lf.host
```

## Mode CSV
<a name="CWL_QuerySyntax-parse-csv"></a>

`parse csv`À utiliser pour analyser les lignes de CSV-formatted journal en champs structurés. Chaque valeur séparée par des virgules est affectée à l'alias correspondant.

**Syntaxe**

```
parse {{fieldName}} csv as {{alias1}}, {{alias2}}, {{alias3}}
```

**Exemples**

```
parse @message csv as timestamp, level, message
| filter level = "ERROR"
| display timestamp, message
```

```
parse @message csv as host, method, path, status, duration
| stats avg(duration) by method
```

## Extraction de champs JSON
<a name="CWL_QuerySyntax-parse-json-field"></a>

`json field={{fieldName}}`À utiliser pour une extraction JSON chaînée explicite à partir d'un champ d'objet précédemment analysé. Cela vous permet d'extraire des clés imbriquées d'un champ structuré sans réanalyser le message brut.

**Syntaxe**

```
json field={{fieldName}} "{{key.subkey}}" as {{alias}}
```

**Exemples**

```
parse @message /(?<payload>\{.*\})/ as payload
| json field=payload "user.name" as username
| display username
```

```
json field=requestContext "identity.sourceIp" as caller_ip
| stats count(*) by caller_ip
```