

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`**mendukung mode glob menggunakan wildcard, dan ekspresi reguler. Untuk informasi tentang sintaks ekspresi reguler, lihat[Sintaks ekspresi reguler (regex) yang didukung](FilterAndPatternSyntax.md#regex-expressions).

 Anda dapat mengurai bidang JSON bersarang dengan ekspresi reguler. 

**Contoh: Mengurai bidang JSON bersarang**

 Cuplikan kode menunjukkan cara mengurai peristiwa log JSON yang telah diratakan selama konsumsi. 

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

 Cuplikan kode menunjukkan kueri dengan ekspresi reguler yang mengekstrak nilai `fieldsB` untuk `fieldsA` dan membuat bidang yang diekstraksi dan. `fld` `array` 

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

**Dinamakan menangkap kelompok**

Bila Anda menggunakan **`parse`**dengan ekspresi reguler, Anda dapat menggunakan grup penangkap bernama untuk menangkap pola ke dalam bidang. Sintaksnya adalah `parse @message (?<Name>pattern)`

Contoh berikut menggunakan grup menangkap pada log aliran VPC untuk mengekstrak ENI ke dalam bidang bernama. `NetworkInterface`

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

**catatan**  
 Peristiwa log JSON diratakan selama konsumsi. Saat ini, mengurai bidang JSON bersarang dengan ekspresi glob tidak didukung. Anda hanya dapat mengurai peristiwa log JSON yang menyertakan tidak lebih dari 200 bidang peristiwa log. Saat Anda mengurai bidang JSON bersarang, Anda harus memformat ekspresi reguler dalam kueri agar sesuai dengan format peristiwa log JSON Anda. 

## Contoh perintah parse
<a name="CWL_QuerySyntax-parse-examples"></a>

**Gunakan ekspresi glob untuk mengekstrak bidang`@user`,`@method`, dan `@latency` dari bidang log `@message` dan kembalikan latensi rata-rata untuk setiap kombinasi unik dan. `@method` `@user`** 

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

**Gunakan ekspresi reguler untuk mengekstrak bidang`@user2`,`@method2`, dan `@latency2` dari bidang log `@message` dan kembalikan latensi rata-rata untuk setiap kombinasi unik `@method2` dan`@user2`.**

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

**Mengekstrak bidang`loggingTime`, `loggingType` dan`loggingMessage`, memfilter ke log peristiwa yang berisi `ERROR` atau `INFO` string, dan kemudian hanya menampilkan `loggingMessage` dan `loggingType` bidang untuk peristiwa yang berisi `ERROR` string.**

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