

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Gunakan `parse` untuk mengekstrak data dari bidang log dan membuat bidang yang diekstraksi yang dapat Anda proses dalam kueri Anda. `parse`Perintah ini mendukung tiga mode: ekspresi glob, ekspresi reguler, dan logfmt.

Jika `fieldName` dihilangkan, digunakan `@message` secara default. Anda dapat mengurai dari bidang bernama dengan menentukan nama bidang sebagai argumen pertama.

Jika peristiwa log tidak cocok dengan pola yang ditentukan, Anda masih melihatnya di hasil, tetapi tanpa bidang yang diekstraksi.

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

Gunakan wildcard (`*`) sebagai placeholder untuk nilai yang ingin Anda ekstrak, dan tetapkan ke bidang bernama. `as`

**Sintaksis**

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

Jumlah `*` wildcard harus sama dengan jumlah alias.

**Contoh**

```
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
```

**Parse dirantai**

Ekstrak bidang, lalu uraikan bidang yang diekstraksi lebih lanjut.

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

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

Gunakan ekspresi reguler dengan grup tangkapan bernama untuk mengekstrak bidang. Untuk informasi tentang sintaks ekspresi reguler, lihat[Sintaks ekspresi reguler (regex) yang didukung](FilterAndPatternSyntax.md#regex-expressions).

**Sintaksis**

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

Gunakan grup tangkapan bernama `(?<{{name}}>...)` untuk menentukan bidang yang diekstraksi.

**Contoh**

**Gunakan grup tangkapan bernama untuk mengekstrak bidang**

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

**Gunakan grup tangkapan bernama untuk mengekstrak ENI dari log aliran VPC**

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

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

Gunakan `parse logfmt` untuk mengurai baris log berformat logfmt menjadi pasangan nilai kunci. Logfmt adalah format logging terstruktur di mana setiap baris berisi pasangan yang dipisahkan spasi`key=value`.

**Sintaksis**

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

Hasilnya adalah peta yang Anda akses dengan notasi titik (misalnya,`lf.level`,`lf.msg`).

**Contoh**

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

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