

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

# CloudWatch Bahasa kueri Wawasan Log (Wawasan Log QL)
<a name="CWL_AnalyzeLogData_LogsInsights"></a>

Bagian ini mencakup dokumentasi lengkap perintah dan fungsi QL Wawasan Log. Ini juga mencakup kueri sampel untuk bahasa ini.

Untuk informasi tentang bahasa kueri lain yang dapat Anda gunakan, lihat [OpenSearch Layanan PPL](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_PPL.html), [SQL OpenSearch Layanan](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_SQL.html), dan. [CloudWatch Metrics Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/query_with_cloudwatch-metrics-insights.html)

**Topics**
+ [

# CloudWatch Sintaks kueri bahasa Wawasan Log
](CWL_QuerySyntax.md)
+ [

# Memulai dengan Logs Insights QL: Tutorial kueri
](CWL_AnalyzeLogData_Tutorials.md)
+ [

# Kueri Sampel
](CWL_QuerySyntax-examples.md)
+ [

# Bandingkan (diff) dengan rentang waktu sebelumnya
](CWL_AnalyzeLogData_Compare.md)
+ [

# Visualisasikan data log dalam grafik
](CWL_Insights-Visualizing-Log-Data.md)

# CloudWatch Sintaks kueri bahasa Wawasan Log
<a name="CWL_QuerySyntax"></a>

 Bagian ini memberikan rincian tentang QL Wawasan Log. Sintaks kueri mendukung berbagai fungsi dan operasi yang menyertakan tetapi tidak terbatas pada fungsi umum, operasi aritmatika dan perbandingan, dan ekspresi reguler.

**penting**  
Untuk menghindari biaya yang berlebihan dengan menjalankan kueri besar, ingatlah praktik terbaik berikut:  
Pilih hanya grup log yang diperlukan untuk setiap kueri.
Selalu tentukan rentang waktu tersempit yang mungkin untuk kueri Anda.
Saat Anda menggunakan konsol untuk menjalankan kueri, batalkan semua kueri sebelum menutup halaman konsol Wawasan CloudWatch Log. Jika tidak, kueri terus berjalan hingga selesai.
Saat Anda menambahkan widget Wawasan CloudWatch Log ke dasbor, pastikan dasbor tidak menyegarkan pada frekuensi tinggi, karena setiap penyegaran memulai kueri baru.

Untuk membuat kueri yang berisi beberapa perintah, pisahkan perintah dengan karakter pipa (**\$1**).

Untuk membuat kueri yang berisi komentar, matikan komentar dengan karakter hash (**\$1**). 

**catatan**  
 CloudWatch Logs Insights secara otomatis menemukan bidang untuk jenis log yang berbeda dan menghasilkan bidang yang dimulai dengan **karakter @**. Untuk informasi selengkapnya tentang bidang ini, lihat [Log yang didukung dan bidang yang ditemukan](https://docs.aws.amazon.com/en_us/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData-discoverable-fields.html) di *Panduan CloudWatch Pengguna Amazon*. 

Tabel berikut menjelaskan secara singkat setiap perintah. Mengikuti tabel ini adalah deskripsi yang lebih komprehensif dari setiap perintah, dengan contoh.

**catatan**  
Semua perintah kueri QL Wawasan Log didukung pada grup log di kelas log Standar. Grup log di kelas log Akses Jarang mendukung semua perintah kueri QL Wawasan Log kecuali`pattern`,, `diff` dan. `unmask`


|  |  | 
| --- |--- |
| **` anomaly`**  | Mengidentifikasi pola yang tidak biasa dalam data log Anda menggunakan pembelajaran mesin.  | 
| **` display`**  |  Menampilkan bidang atau bidang tertentu dalam hasil kueri.  | 
| **` fields`**  |  Menampilkan bidang tertentu dalam hasil kueri dan mendukung fungsi dan operasi yang dapat Anda gunakan untuk memodifikasi nilai bidang dan membuat bidang baru untuk digunakan dalam kueri Anda.  | 
| **` filter`**  |  Memfilter kueri untuk mengembalikan hanya peristiwa log yang cocok dengan satu atau beberapa kondisi.  | 
| **` filterIndex`**  |  Memaksa kueri untuk mencoba memindai hanya grup log yang keduanya diindeks pada bidang yang disebutkan dalam indeks bidang dan juga berisi nilai untuk indeks bidang tersebut. Ini mengurangi volume yang dipindai dengan mencoba memindai hanya peristiwa log dari grup log ini yang berisi nilai yang ditentukan dalam kueri untuk indeks bidang ini.  Perintah ini tidak didukung untuk grup log di kelas log Akses Jarang. | 
| **` pattern`**  | Secara otomatis mengelompokkan data log Anda ke dalam pola. Pola adalah struktur teks bersama yang berulang di antara bidang log Anda. CloudWatch Logs Insights menyediakan cara bagi Anda untuk menganalisis pola yang ditemukan dalam peristiwa log Anda. Untuk informasi selengkapnya, lihat [Analisis pola](CWL_AnalyzeLogData_Patterns.md). | 
| **` diff`**  | Membandingkan peristiwa log yang ditemukan dalam periode waktu yang Anda minta dengan peristiwa log dari periode waktu sebelumnya dengan panjang yang sama, sehingga Anda dapat mencari tren dan mencari tahu apakah peristiwa log tertentu baru.  | 
| **` parse`**  |  Mengekstrak data dari bidang log untuk membuat bidang yang diekstraksi yang dapat Anda proses dalam kueri Anda. **`parse`**mendukung mode glob menggunakan wildcard, dan ekspresi reguler.  | 
| **` sort`**  | Menampilkan peristiwa log yang dikembalikan dalam urutan ascending (`asc`) atau descending (`desc`).  | 
| **` SOURCE`**  | Termasuk `SOURCE` dalam kueri adalah cara yang berguna untuk menentukan sejumlah besar grup log berdasarkan awalan nama grup log, pengidentifikasi akun, dan kelas grup log untuk disertakan dalam kueri. Perintah ini didukung hanya ketika Anda membuat kueri di AWS CLI atau secara terprogram, bukan di CloudWatch konsol.  | 
| **` stats`**  |  Hitung statistik agregat menggunakan nilai di bidang log.  | 
| **` limit`**  | Menentukan jumlah maksimum peristiwa log yang Anda ingin query Anda untuk kembali. **`sort`**Berguna dengan mengembalikan hasil “20 teratas” atau “20 terbaru”.  | 
| **` dedup`**  |  Menghapus hasil duplikat berdasarkan nilai tertentu di bidang yang Anda tentukan. | 
| **` unmask`**  |  Menampilkan semua konten peristiwa log yang memiliki beberapa konten yang disembunyikan karena kebijakan perlindungan data. Untuk informasi selengkapnya tentang perlindungan data di grup log, lihat[Membantu melindungi data log sensitif dengan masking](mask-sensitive-log-data.md).  | 
|   **`[unnest](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-Unnest.html)`**   |   Meratakan daftar yang diambil sebagai masukan untuk menghasilkan beberapa catatan dengan satu catatan untuk setiap elemen dalam daftar.   | 
| **` lookup`**  | Memperkaya peristiwa log dengan data dari tabel pencarian dengan mencocokkan nilai bidang. Gunakan tabel pencarian untuk menambahkan data referensi seperti detail pengguna, nama aplikasi, atau informasi produk ke hasil kueri Anda. | 
| **[Operasi dan fungsi lainnya](CWL_QuerySyntax-operations-functions.md)**  | CloudWatch Logs Insights juga mendukung banyak perbandingan, aritmatika, datetime, numerik, string, alamat IP, dan fungsi dan operasi umum.  | 

Bagian berikut memberikan detail selengkapnya tentang perintah kueri Wawasan CloudWatch Log.

**Topics**
+ [

# Log Insights Perintah QL didukung di kelas log
](CWL_AnalyzeLogData_Classes.md)
+ [

# anomali
](CWL_QuerySyntax-Anomaly.md)
+ [

# **tampilan**
](CWL_QuerySyntax-Display.md)
+ [

# ladang
](CWL_QuerySyntax-Fields.md)
+ [

# filter
](CWL_QuerySyntax-Filter.md)
+ [

# FilterIndex
](CWL_QuerySyntax-FilterIndex.md)
+ [

# SUMBER
](CWL_QuerySyntax-Source.md)
+ [

# pola
](CWL_QuerySyntax-Pattern.md)
+ [

# perbedaan
](CWL_QuerySyntax-Diff.md)
+ [

# mengurai
](CWL_QuerySyntax-Parse.md)
+ [

# menyortir
](CWL_QuerySyntax-Sort.md)
+ [

# statistik
](CWL_QuerySyntax-Stats.md)
+ [

# batasan
](CWL_QuerySyntax-Limit.md)
+ [

# dedup
](CWL_QuerySyntax-Dedup.md)
+ [

# membuka kedok
](CWL_QuerySyntax-Unmask.md)
+ [

# unnest
](CWL_QuerySyntax-Unnest.md)
+ [

# pencarian
](CWL_QuerySyntax-Lookup.md)
+ [

# Boolean, perbandingan, numerik, datetime, dan fungsi lainnya
](CWL_QuerySyntax-operations-functions.md)
+ [

# Bidang yang berisi karakter khusus
](CWL_QuerySyntax-Guidelines.md)
+ [

# Gunakan alias dan komentar dalam kueri
](CWL_QuerySyntax-alias.md)

# Log Insights Perintah QL didukung di kelas log
<a name="CWL_AnalyzeLogData_Classes"></a>

Semua perintah kueri QL Wawasan Log didukung pada grup log di kelas log Standar. Grup log di kelas log Akses Jarang mendukung semua perintah kueri kecuali`pattern`,, `diff``filterIndex`, dan`unmask`.

# anomali
<a name="CWL_QuerySyntax-Anomaly"></a>

 Gunakan `anomaly` untuk secara otomatis mengidentifikasi pola yang tidak biasa dan potensi masalah dalam data log Anda menggunakan pembelajaran mesin. 

`anomaly`Perintah memperluas `pattern` fungsionalitas yang ada dan memanfaatkan analitik lanjutan untuk membantu mengidentifikasi potensi anomali dalam data log. Anda dapat menggunakannya `anomaly` untuk mengurangi waktu yang diperlukan untuk mengidentifikasi dan menyelesaikan masalah operasional dengan secara otomatis menampilkan pola atau perilaku yang tidak biasa di log Anda.

`anomaly`Perintah bekerja dengan ` pattern` perintah untuk pertama mengidentifikasi pola log, kemudian mendeteksi anomali dalam pola tersebut. Anda juga dapat menggabungkan `anomaly` dengan ` sort` perintah ` filter` atau untuk memfokuskan deteksi anomali pada himpunan bagian tertentu dari data Anda. 

**Masukan Perintah Anomali**

 `anomaly`Perintah ini biasanya digunakan setelah ` pattern` perintah untuk menganalisis pola yang diidentifikasi dalam data log Anda. Perintah tidak memerlukan parameter tambahan dan menganalisis output dari perintah sebelumnya dalam kueri Anda. 

**Jenis Anomali yang Diidentifikasi**

 `anomaly`Perintah mengidentifikasi lima jenis anomali yang berbeda:
+ *Anomali Frekuensi Pola*: Frekuensi yang tidak biasa dari pola log tertentu, seperti ketika aplikasi mulai menghasilkan lebih banyak pesan kesalahan daripada biasanya.
+ *Anomali Pola Baru*: Pola log yang sebelumnya tidak terlihat yang mungkin menunjukkan jenis kesalahan atau pesan baru yang muncul di log Anda.
+ *Anomali Variasi Token*: Perubahan tak terduga dalam konten pesan log yang mungkin menunjukkan variasi yang tidak biasa dalam format log yang diharapkan.
+ *Anomali Token Numerik*: Perubahan yang tidak biasa dalam nilai numerik dalam log yang dapat membantu mendeteksi potensi masalah kinerja atau variasi metrik yang tidak terduga.
+ *Anomali Kode Kesalahan HTTP*: Pola yang terkait dengan respons kesalahan HTTP, sangat berguna saat memantau aplikasi web dan. APIs

**Output Perintah Anomali**

 `anomaly`Perintah mempertahankan semua bidang dari data input dan menambahkan hasil deteksi anomali untuk membantu mengidentifikasi pola yang tidak biasa dalam data log Anda.

**Contoh**

Perintah berikut mengidentifikasi pola dalam data log Anda dan kemudian mendeteksi anomali dalam pola tersebut:

```
fields @timestamp, @message
| pattern @message
| anomaly
```

`anomaly`Perintah ini dapat digunakan dengan pemfilteran untuk fokus pada jenis log tertentu:

```
fields @timestamp, @message
| filter @type = "REPORT"
| pattern @message
| anomaly
```

`anomaly`Perintah dapat dikombinasikan dengan penyortiran untuk mengatur hasil:

```
fields @timestamp, @message
| filter @type = "ERROR"
| pattern @message
| anomaly
| sort @timestamp desc
```

# **tampilan**
<a name="CWL_QuerySyntax-Display"></a>

 Gunakan `display` untuk menampilkan bidang atau bidang tertentu dalam hasil kueri. 

 `display`Perintah hanya menampilkan bidang yang Anda tentukan. Jika kueri Anda berisi beberapa `display` perintah, hasil kueri hanya menampilkan bidang atau bidang yang Anda tentukan dalam `display` perintah akhir.

 **Contoh: Menampilkan satu bidang** 

 Cuplikan kode menunjukkan contoh kueri yang menggunakan perintah parse untuk mengekstrak data dari `@message` untuk membuat bidang yang diekstraksi dan. `loggingType` `loggingMessage` Query mengembalikan semua peristiwa log di mana nilai-nilai untuk `loggingType` adalah **ERROR**. `display`hanya menampilkan nilai untuk `loggingMessage` dalam hasil query. 

```
fields @message
| parse @message "[*] *" as loggingType, loggingMessage
| filter loggingType = "ERROR"
| display loggingMessage
```

**Tip**  
 Gunakan `display` hanya sekali dalam kueri. Jika Anda menggunakan `display` lebih dari sekali dalam kueri, hasil kueri menunjukkan bidang yang ditentukan dalam kemunculan terakhir `display` perintah yang digunakan. 

# ladang
<a name="CWL_QuerySyntax-Fields"></a>

 Gunakan `fields` untuk menampilkan bidang tertentu dalam hasil kueri. 

Jika kueri Anda berisi beberapa `fields` perintah dan tidak menyertakan `display` perintah, hasilnya akan menampilkan semua bidang yang ditentukan dalam `fields` perintah.

 **Contoh: Menampilkan bidang tertentu** 

 Contoh berikut menunjukkan query yang mengembalikan 20 peristiwa log dan menampilkannya dalam urutan menurun. Nilai untuk `@timestamp` dan `@message` ditampilkan dalam hasil query. 

```
fields @timestamp, @message
| sort @timestamp desc
| limit 20
```

Gunakan `fields` alih-alih `display` saat Anda ingin menggunakan berbagai fungsi dan operasi yang didukung oleh `fields` untuk memodifikasi nilai bidang dan membuat bidang baru yang dapat digunakan dalam kueri. 

*Anda dapat menggunakan `fields` perintah dengan kata kunci untuk membuat bidang yang diekstraksi yang menggunakan bidang dan fungsi dalam peristiwa log Anda.* Misalnya, `fields ispresent as isRes` membuat bidang yang diekstraksi bernama`isRes`, dan bidang yang diekstraksi dapat digunakan di sisa kueri Anda. 

# filter
<a name="CWL_QuerySyntax-Filter"></a>

 Gunakan `filter` untuk mendapatkan peristiwa log yang cocok dengan satu atau beberapa kondisi. 

 **Contoh: Filter peristiwa log menggunakan satu kondisi** 

 ***Cuplikan kode menunjukkan contoh kueri yang mengembalikan semua peristiwa log yang nilainya `range` lebih besar dari 3000.*** Kueri membatasi hasil hingga 20 peristiwa log dan mengurutkan peristiwa log berdasarkan `@timestamp` dan dalam urutan menurun. 

```
fields @timestamp, @message
| filter (range>3000)
| sort @timestamp desc
| limit 20
```

 **Contoh: Filter peristiwa log menggunakan lebih dari satu kondisi** 

 Anda dapat menggunakan kata kunci `and` dan `or` menggabungkan lebih dari satu kondisi. 

 ***Cuplikan kode menunjukkan contoh kueri yang mengembalikan peristiwa log di mana nilai untuk lebih besar dari ***3000*** dan nilai untuk `range` sama dengan `accountId` 123456789012.*** Kueri membatasi hasil hingga 20 peristiwa log dan mengurutkan peristiwa log berdasarkan `@timestamp` dan dalam urutan menurun. 

```
fields @timestamp, @message
| filter (range>3000 and accountId=123456789012)
| sort @timestamp desc
| limit 20
```

## Bidang yang diindeks dan perintah filter
<a name="CWL_QuerySyntax-index"></a>

Jika Anda telah membuat indeks bidang untuk grup log, Anda dapat memanfaatkan indeks bidang tersebut untuk membuat `filter` kueri Anda lebih efisien dan mengurangi volume yang dipindai. Misalnya, Anda telah membuat indeks bidang untuk`requestId`. Kemudian, kueri CloudWatch Logs Insights apa pun pada grup log yang menyertakan `filter requestId = value` atau `filter requestId IN [value, value, ...]` akan mencoba melewati proses peristiwa log yang diketahui tidak menyertakan bidang yang diindeks. Dengan mencoba memindai hanya peristiwa log yang diketahui berisi bidang yang diindeks itu, volume pemindaian dapat dikurangi dan kueri lebih cepat.

Untuk informasi selengkapnya tentang indeks bidang dan cara membuatnya, lihat[Buat indeks bidang untuk meningkatkan kinerja kueri dan mengurangi volume pemindaian](CloudWatchLogs-Field-Indexing.md).

**penting**  
Hanya kueri dengan `filter fieldName =...` dan `filter fieldName IN...` akan mendapat manfaat dari peningkatan indeks lapangan. Kueri dengan `filter fieldName like` tidak menggunakan indeks dan selalu memindai semua peristiwa log di grup log yang dipilih.

**Contoh: Temukan peristiwa log yang terkait dengan ID permintaan tertentu, menggunakan indeks** 

 Contoh ini mengasumsikan bahwa Anda telah membuat indeks bidang pada`requestId`. Untuk grup log yang menggunakan indeks bidang ini, kueri akan memanfaatkan indeks bidang untuk mencoba memindai jumlah peristiwa log paling sedikit untuk menemukan peristiwa `requestId` dengan nilai `123456` 

```
fields @timestamp, @message
| filter requestId = "1234656"
| limit 20
```

## Kecocokan dan ekspresi reguler dalam perintah filter
<a name="CWL_QuerySyntax-regex"></a>

Perintah filter mendukung penggunaan ekspresi reguler. Anda dapat menggunakan operator perbandingan berikut (`=`,,`!=`,`<`, `<=``>`,`>=`) dan operator Boolean (`and`,`or`, dan`not`).

Anda dapat menggunakan kata kunci `in` untuk menguji keanggotaan set dan memeriksa elemen dalam array. Untuk memeriksa elemen dalam array, letakkan array setelahnya`in`. Anda dapat menggunakan operator Boolean `not` dengan`in`. Anda dapat membuat kueri yang digunakan `in` untuk mengembalikan peristiwa log di mana bidang cocok dengan string. Bidang harus string lengkap. Misalnya, cuplikan kode berikut menunjukkan kueri yang digunakan `in` untuk mengembalikan peristiwa log di mana bidang `logGroup` adalah string lengkap. `example_group`

```
fields @timestamp, @message
| filter logGroup in ["example_group"]
```

Anda dapat menggunakan frase kata kunci `like` dan `not like` untuk mencocokkan substring. Anda dapat menggunakan operator ekspresi reguler `=~` untuk mencocokkan substring. Untuk mencocokkan substring dengan `like` dan`not like`, lampirkan substring yang ingin Anda cocokkan dalam tanda kutip tunggal atau ganda. Anda dapat menggunakan pola ekspresi reguler dengan `like` dan`not like`. Untuk mencocokkan substring dengan operator ekspresi reguler, lampirkan substring yang ingin Anda cocokkan dalam garis miring maju. Contoh berikut berisi cuplikan kode yang menunjukkan bagaimana Anda dapat mencocokkan substring menggunakan perintah. `filter`

**Contoh: Match substring**

 Contoh berikut mengembalikan peristiwa log yang `f1` berisi kata ***Pengecualian***. Ketiga contoh tersebut peka terhadap huruf besar dan kecil. 

Contoh pertama cocok dengan substring dengan`like`. 

```
fields f1, f2, f3 
| filter f1 like "Exception"
```

 Contoh kedua cocok dengan substring dengan `like` dan pola ekspresi reguler. 

```
fields f1, f2, f3 
| filter f1 like /Exception/
```

 Contoh ketiga cocok dengan substring dengan ekspresi reguler. 

```
fields f1, f2, f3 
| filter f1 =~ /Exception/
```

**Contoh: Cocokkan substring dengan wildcard**

 Anda dapat menggunakan simbol periode (`.`) sebagai wildcard dalam ekspresi reguler untuk mencocokkan substring. Dalam contoh berikut, query mengembalikan kecocokan di mana nilai untuk `f1` dimulai dengan string`ServiceLog`. 

```
fields f1, f2, f3
| filter f1 like /ServiceLog./
```

 Anda dapat menempatkan simbol tanda bintang setelah simbol periode (`.*`) untuk membuat kuantifier serakah yang mengembalikan kecocokan sebanyak mungkin. Misalnya, query berikut mengembalikan kecocokan di mana nilai untuk `f1` tidak hanya dimulai dengan string`ServiceLog`, tetapi juga termasuk string`ServiceLog`. 

```
fields f1, f2, f3
| filter f1 like /ServiceLog.*/
```

 Kemungkinan kecocokan dapat diformat seperti berikut: 
+  `ServiceLogSampleApiLogGroup` 
+  `SampleApiLogGroupServiceLog` 

**Contoh: Kecualikan substring dari korek api**

Contoh berikut menunjukkan query yang mengembalikan peristiwa log di mana `f1` tidak mengandung kata ***Exception***. Contohnya adalah case senstive.

```
fields f1, f2, f3 
| filter f1 not like "Exception"
```

**Contoh: Cocokkan substring dengan pola case-insensitive**

Anda dapat mencocokkan substring yang tidak peka huruf besar/kecil dengan ekspresi `like` reguler. Tempatkan parameter berikut (**? **i) sebelum substring yang ingin Anda cocokkan. Contoh berikut menunjukkan query yang mengembalikan peristiwa log yang `f1` berisi kata ***Pengecualian*** atau ***pengecualian***.

```
fields f1, f2, f3 
| filter f1 like /(?i)Exception/
```

# FilterIndex
<a name="CWL_QuerySyntax-FilterIndex"></a>

 Gunakan `filterIndex` untuk mengembalikan data yang diindeks saja, dengan memaksa kueri untuk memindai hanya grup log yang diindeks pada bidang yang Anda tentukan dalam kueri. Untuk grup log ini yang diindeks di bidang ini, selanjutnya mengoptimalkan kueri dengan melewatkan grup log yang tidak memiliki peristiwa log yang berisi bidang yang ditentukan dalam kueri untuk bidang yang diindeks. Selanjutnya mengurangi volume yang dipindai dengan mencoba memindai hanya peristiwa log dari grup log ini yang cocok dengan nilai yang ditentukan dalam kueri untuk indeks bidang ini. Untuk informasi selengkapnya tentang indeks bidang dan cara membuatnya, lihat[Buat indeks bidang untuk meningkatkan kinerja kueri dan mengurangi volume pemindaian](CloudWatchLogs-Field-Indexing.md).

Menggunakan `filterIndex` dengan bidang yang diindeks dapat membantu Anda menanyakan grup log yang menyertakan petabyte data log secara efisien dengan membatasi ruang pencarian aktual untuk grup log dan peristiwa log yang memiliki indeks bidang.

Misalnya, Anda telah membuat indeks bidang untuk `IPaddress` beberapa grup log di akun Anda. Anda kemudian dapat membuat kueri berikut dan memilih untuk menanyakan semua grup log di akun untuk menemukan peristiwa log yang menyertakan nilai `198.51.100.0` di `IPaddress` bidang.

```
fields @timestamp, @message
| filterIndex IPaddress = "198.51.100.0"
| limit 20
```

`filterIndex`Perintah menyebabkan kueri ini mencoba melewati semua grup log yang tidak diindeks. `IPaddress` Selain itu, dalam grup log yang diindeks, kueri melewatkan peristiwa log yang memiliki `IPaddress` bidang tetapi tidak diamati `198.51.100.0` sebagai nilai untuk bidang tersebut.

Gunakan `IN` operator untuk memperluas hasil ke salah satu dari beberapa nilai untuk bidang yang diindeks. Contoh berikut menemukan log peristiwa yang menyertakan nilai `198.51.100.0` atau `198.51.100.1` di `IPaddress` bidang. 

```
fields @timestamp, @message 
| filterIndex IPaddress in ["198.51.100.0", "198.51.100.1"]
| limit 20
```

CloudWatch Log menyediakan indeks bidang default untuk semua grup log di kelas log Standar. Indeks bidang default secara otomatis tersedia untuk bidang berikut: 
+ `@logStream`
+ `@aws.region`
+ `@aws.account`
+ `@source.log`
+ `@data_source_name`
+ `@data_source_type`
+ `@data_format`
+ `traceId`
+ `severityText`
+ `attributes.session.id`

CloudWatch Log menyediakan indeks bidang default untuk nama sumber data tertentu dan kombinasi tipe juga. Indeks bidang default secara otomatis tersedia untuk kombinasi nama dan jenis sumber data berikut:


| Nama dan Jenis Sumber Data | Indeks Bidang Default | 
| --- | --- | 
|  `amazon_vpc.flow`  |  `action` `logStatus` `region` `flowDirection` `type`  | 
|  `amazon_route53.resolver_query`  |  `query_type` `transport` `rcode`  | 
|  `aws_waf.access`  |  `action` `httpRequest.country`  | 
|  `aws_cloudtrail.data` ` aws_cloudtrail.management`  |  `eventSource` `eventName` `awsRegion` `userAgent` `errorCode` `eventType` `managementEvent` `readOnly` `eventCategory` `requestId`  | 

Indeks bidang default merupakan tambahan dari indeks bidang kustom apa pun yang Anda tentukan dalam kebijakan Anda. Indeks bidang default tidak dihitung terhadap kuota [indeks bidang](CloudWatchLogs-Field-Indexing-Syntax.md) Anda. 

## FilterIndex dibandingkan dengan filter
<a name="CWL_QuerySyntax-FilterIndex-Filter"></a>

Untuk mengilustrasikan perbedaan antara `filterIndex` dan`filter`, pertimbangkan contoh kueri berikut. Misalnya Anda telah membuat indeks bidang untuk`IPaddress`, untuk empat grup log Anda, tetapi tidak untuk grup log kelima. Penggunaan kueri berikut `filterIndex` akan melewati pemindaian grup log yang tidak memiliki bidang yang diindeks. Untuk setiap grup log yang diindeks, ia mencoba memindai hanya peristiwa log yang memiliki bidang yang diindeks, dan juga hanya mengembalikan hasil setelah indeks bidang dibuat.

```
fields @timestamp, @message 
| filterIndex IPaddress = "198.51.100.0" 
| limit 20
```

Sebaliknya, jika Anda menggunakan `filter` bukan `filterIndex` untuk kueri dari lima grup log yang sama, kueri akan mencoba memindai tidak hanya peristiwa log yang berisi nilai dalam grup log yang diindeks, tetapi juga akan memindai grup log kelima yang tidak diindeks, dan itu akan memindai setiap peristiwa log di grup log kelima itu.

```
fields @timestamp, @message 
| filter IPaddress = "198.51.100.0" 
| limit 20
```

# SUMBER
<a name="CWL_QuerySyntax-Source"></a>

Termasuk `SOURCE` dalam kueri adalah cara yang berguna untuk menentukan sumber and/or data grup log untuk disertakan dalam kueri saat Anda menggunakan API AWS CLI atau untuk membuat kueri. `SOURCE`Perintah hanya didukung di API AWS CLI dan, bukan di CloudWatch konsol. Saat Anda menggunakan CloudWatch konsol untuk memulai kueri, Anda menggunakan antarmuka konsol untuk menentukan grup log. 

Grup log kueri

Untuk digunakan `SOURCE` untuk menentukan grup log untuk query, Anda dapat menggunakan kata kunci berikut:
+ `namePrefix`menjalankan kueri terhadap grup log yang memiliki nama yang dimulai dengan string yang Anda tentukan. Jika Anda menghilangkan ini, semua grup log ditanyakan.

  Anda dapat memasukkan sebanyak lima awalan dalam daftar.
+ `accountIdentifier`menjalankan kueri terhadap grup log di AWS akun yang ditentukan. Ini hanya berfungsi ketika Anda menjalankan kueri di akun pemantauan. Jika Anda menghilangkan ini, defaultnya adalah menanyakan semua akun sumber tertaut dan akun pemantauan saat ini. Untuk informasi lebih lanjut tentang observabilitas lintas akun, lihat observabilitas [CloudWatch lintas](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html) akun.

  Anda dapat memasukkan sebanyak 20 pengidentifikasi akun dalam daftar.
+ `logGroupClass`menjalankan kueri terhadap grup log yang berada di kelas log tertentu, baik Standard atau Infrequent Access. Jika Anda menghilangkan ini, default kelas log Standar digunakan. Untuk informasi selengkapnya tentang kelas log, lihat[Kelas log](CloudWatch_Logs_Log_Classes.md).

Karena Anda dapat menentukan sejumlah besar grup log untuk kueri dengan cara ini, sebaiknya gunakan `SOURCE` hanya dalam kueri yang memanfaatkan indeks bidang yang telah Anda buat. Untuk informasi selengkapnya tentang bidang pengindeksan di grup log, lihat [Buat indeks bidang untuk meningkatkan kinerja kueri dan mengurangi volume pemindaian](CloudWatchLogs-Field-Indexing.md)

Contoh berikut memilih semua grup log di akun. Jika ini adalah akun pemantauan maka grup log di seluruh pemantauan dan semua akun sumber akan dipilih. Jika jumlah grup log melebihi 10.000 maka Anda akan melihat kesalahan yang mendorong Anda untuk mengurangi jumlah grup log dengan menggunakan metode pemilihan grup log yang berbeda.

```
SOURCE logGroups()
```

Contoh berikut memilih grup log di akun `111122223333` sumber. Jika Anda memulai kueri di akun pemantauan dalam pengamatan CloudWatch lintas akun, grup log di semua akun sumber dan di akun pemantauan dipilih secara default.

```
SOURCE logGroups(accountIdentifiers:['111122223333'])
```

Contoh berikutnya memilih grup log berdasarkan awalan nama.

```
SOURCE logGroups(namePrefix: ['namePrefix1', 'namePrefix2'])
```

Contoh berikut memilih semua grup log di kelas log Akses Jarang. Jika Anda tidak menyertakan `class` pengenal, kueri hanya berlaku untuk grup log di kelas log Standar, yang merupakan default. 

```
SOURCE logGroups(class: ['INFREQUENT_ACCESS'])
```

Contoh berikutnya memilih grup log di akun 111122223333 yang dimulai dengan awalan nama tertentu dan berada di kelas log Standar. Kelas tidak disebutkan dalam perintah karena Standar adalah nilai kelas log default. 

```
SOURCE logGroups(accountIdentifiers:['111122223333'], namePrefix: ['namePrefix1', 'namePrefix2']
```

Contoh terakhir menampilkan cara menggunakan `SOURCE` perintah dengan `start-query` AWS CLI perintah.

```
aws logs start-query 
--region us-east-1 
--start-time 1729728200 
--end-time 1729728215 
--query-string "SOURCE logGroups(namePrefix: ['Query']) | fields @message | limit 5"
```

Sumber data kueri

Untuk digunakan `SOURCE` untuk menentukan sumber data untuk query, Anda dapat menggunakan `dataSource` kata kunci. Anda dapat memasukkan sebanyak sepuluh sumber data dalam daftar.

 Contoh berikut memilih sumber `amazon_vpc.flow` data. 

```
SOURCE dataSource(['amazon_vpc.flow'])
```

 Contoh berikut memilih sumber `amazon_vpc.flow` data dan membatasi grup log berdasarkan awalan nama grup log. 

```
SOURCE dataSource(['amazon_vpc.flow']) logGroups(namePrefix: ['namePrefix1'])
```

# pola
<a name="CWL_QuerySyntax-Pattern"></a>

 Gunakan `pattern` untuk secara otomatis mengelompokkan data log Anda ke dalam pola. 

Pola adalah struktur teks bersama yang berulang di antara bidang log Anda. Anda dapat menggunakan `pattern` untuk memunculkan tren yang muncul, memantau kesalahan yang diketahui, dan mengidentifikasi jalur log yang sering terjadi atau berbiaya tinggi. CloudWatch Logs Insights juga menyediakan pengalaman konsol yang dapat Anda gunakan untuk menemukan dan menganalisis pola lebih lanjut dalam peristiwa log Anda. Untuk informasi selengkapnya, lihat [Analisis pola](CWL_AnalyzeLogData_Patterns.md).

Karena `pattern` perintah secara otomatis mengidentifikasi pola umum, Anda dapat menggunakannya sebagai titik awal untuk mencari dan menganalisis log Anda. Anda juga dapat menggabungkan `pattern` dengan` filter`,` parse`, atau ` sort` perintah untuk mengidentifikasi pola dalam kueri yang lebih disempurnakan. 

**Masukan Perintah Pola**

 `pattern`[Perintah mengharapkan salah satu input berikut: `@message` bidang, bidang yang diekstraksi yang dibuat menggunakan ` parse` perintah, atau string yang dimanipulasi menggunakan satu atau beberapa fungsi String.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html#CWL_QuerySyntax-string-functions) 

Jika CloudWatch Log tidak dapat menyimpulkan jenis data yang diwakili oleh token dinamis, menampilkannya sebagai <Token- *number* >, dan *number* menunjukkan di mana dalam pola token ini muncul, dibandingkan dengan token dinamis lainnya.

Contoh umum token dinamis termasuk kode kesalahan, alamat IP, stempel waktu, dan permintaan. IDs

**Output Perintah Pola**

 `pattern`Perintah menghasilkan output berikut:
+ `@pattern`: Struktur teks bersama yang berulang di antara bidang peristiwa log Anda. *Bidang yang bervariasi dalam suatu pola, seperti ID permintaan atau stempel waktu, diwakili oleh token.* Jika CloudWatch Log dapat menentukan jenis data yang diwakili oleh token dinamis, itu akan menampilkan token sebagai`<string-number>`. *string*Ini adalah deskripsi dari jenis data yang diwakili oleh token. *number*Menunjukkan di mana dalam pola token ini muncul, dibandingkan dengan token dinamis lainnya.

  CloudWatch Log menetapkan bagian string dari nama berdasarkan analisis konten peristiwa log yang berisi itu.

  Jika CloudWatch Log tidak dapat menyimpulkan jenis data yang diwakili oleh token dinamis, menampilkannya sebagai <Token- *number* >, dan *number* menunjukkan di mana dalam pola token ini muncul, dibandingkan dengan token dinamis lainnya.

  Misalnya, `[INFO] Request time: <Time-1> ms` adalah output potensial untuk pesan log`[INFO] Request time: 327 ms`.
+ `@ratio`: Rasio peristiwa log dari periode waktu yang dipilih dan grup log tertentu yang cocok dengan pola yang diidentifikasi. Misalnya, jika setengah dari peristiwa log dalam grup log yang dipilih dan periode waktu cocok dengan pola, `@ratio` kembali `0.50`
+ `@sampleCount`: Hitungan jumlah peristiwa log dari periode waktu yang dipilih dan grup log tertentu yang cocok dengan pola yang diidentifikasi.
+ `@severityLabel`: Tingkat keparahan atau tingkat log, yang menunjukkan jenis informasi yang terkandung dalam log. Contohnya: `Error`, `Warning`, `Info`, atau `Debug`.

**Contoh**

Perintah berikut mengidentifikasi log dengan struktur serupa dalam grup log tertentu selama rentang waktu yang dipilih, mengelompokkannya berdasarkan pola dan hitungan

```
pattern @message
```

`pattern`Perintah dapat digunakan dalam kombinasi dengan ` filter` perintah

```
filter @message like /ERROR/
| pattern @message
```

`pattern`Perintah dapat digunakan dengan ` sort` perintah ` parse` dan

```
filter @message like /ERROR/
| parse @message 'Failed to do: *' as cause
| pattern cause
| sort @sampleCount asc
```

# perbedaan
<a name="CWL_QuerySyntax-Diff"></a>

Membandingkan peristiwa log yang ditemukan dalam periode waktu yang Anda minta dengan peristiwa log dari periode waktu sebelumnya dengan panjang yang sama. Dengan cara ini, Anda dapat mencari tren dan menemukan apakah peristiwa log tertentu baru.

Tambahkan pengubah ke `diff` perintah untuk menentukan periode waktu yang ingin Anda bandingkan dengan:
+ `diff`membandingkan peristiwa log dalam rentang waktu yang dipilih saat ini dengan peristiwa log dari rentang waktu sebelumnya.
+ `diff previousDay`membandingkan peristiwa log dalam rentang waktu yang dipilih saat ini dengan peristiwa log dari waktu yang sama pada hari sebelumnya.
+ `diff previousWeek`membandingkan peristiwa log dalam rentang waktu yang dipilih saat ini dengan peristiwa log dari waktu yang sama minggu sebelumnya.
+ `diff previousMonth`membandingkan peristiwa log dalam rentang waktu yang dipilih saat ini dengan peristiwa log dari waktu yang sama pada bulan sebelumnya.

Untuk informasi selengkapnya, lihat [Bandingkan (diff) dengan rentang waktu sebelumnya](CWL_AnalyzeLogData_Compare.md).

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

# menyortir
<a name="CWL_QuerySyntax-Sort"></a>

 Gunakan `sort` untuk menampilkan peristiwa log dalam urutan ascending (`asc`) atau descending (`desc`) dengan bidang tertentu. Anda dapat menggunakan ini dengan `limit` perintah untuk membuat kueri “N atas” atau “N bawah”. 

Algoritma penyortiran adalah versi terbaru dari penyortiran alami. Jika Anda mengurutkan dalam urutan menaik, logika berikut digunakan.
+  Semua nilai non-angka datang sebelum semua nilai angka. *Nilai angka* adalah nilai yang hanya mencakup angka, bukan campuran angka dan karakter lainnya.
+ Untuk nilai non-angka, algoritme mengelompokkan karakter numerik berurutan dan karakter alfabet berurutan ke dalam potongan terpisah untuk perbandingan. Ini memesan bagian non-numerik dengan nilai Unicode mereka, dan mengurutkan bagian numerik berdasarkan panjangnya terlebih dahulu dan kemudian dengan nilai numeriknya.

Untuk informasi selengkapnya tentang urutan Unicode, lihat [Daftar karakter Unicode](https://en.wikipedia.org/wiki/List_of_Unicode_characters).

Misalnya, berikut ini adalah hasil dari semacam dalam urutan menaik.

```
!:	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> sorted by unicode order
#
*%04
0#	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Alphanumeric starting with numbers
5A
111A   >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>  Starts with more digits than 5A, so it sorted to be later than 5A
2345_
@	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2345 is compared with @ in the unicode order, 
@_
A	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Values starting with letters
A9876fghj
a12345hfh
0	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Number values
01
1
2
3
```

Jika Anda mengurutkan dalam urutan menurun, hasil urutannya adalah sebaliknya.

Misalnya, kueri berikut untuk log aliran VPC Amazon menemukan 15 transfer paket teratas di seluruh host.

```
stats sum(packets) as packetsTransferred by srcAddr, dstAddr
    | sort packetsTransferred  desc
    | limit 15
```

# statistik
<a name="CWL_QuerySyntax-Stats"></a>

 Gunakan `stats` untuk membuat visualisasi data log Anda seperti diagram batang, diagram garis, dan bagan area bertumpuk. Ini membantu Anda mengidentifikasi pola dalam data log Anda dengan lebih efisien. CloudWatch Log Insights menghasilkan visualisasi untuk kueri yang menggunakan `stats` fungsi dan satu atau beberapa fungsi agregasi. 

Misalnya, kueri berikut dalam grup log Route 53 mengembalikan visualisasi yang menunjukkan distribusi catatan Route 53 per jam, berdasarkan jenis kueri.

```
stats count(*) by queryType, bin(1h)
```

Semua kueri tersebut dapat menghasilkan diagram batang. Jika kueri Anda menggunakan fungsi `bin()` untuk mengelompokkan data dengan satu bidang dari waktu ke waktu, Anda juga dapat melihat diagram garis dan diagram area bertumpuk.

Satuan waktu dan singkatan berikut didukung dengan `bin` fungsi tersebut. Untuk semua unit dan singkatan yang menyertakan lebih dari satu karakter, menambahkan s ke pluralisasi didukung. Jadi keduanya `hr` dan `hrs` bekerja untuk menentukan jam.
+ `millisecond` `ms` `msec`
+ `second` `s` `sec`
+ `minute` `m` `min`
+ `hour` `h` `hr`
+ `day` `d` 
+ `week` `w` 
+ `month` `mo` `mon`
+ `quarter` `q` `qtr`
+ `year` `y` `yr`

**Topics**
+ [

## Visualisasikan data deret waktu
](#CWL_Insights-Visualizing-TimeSeries)
+ [

## Visualisasikan data log yang dikelompokkan berdasarkan bidang
](#CWL_Insights-Visualizing-ByFields)
+ [

## Gunakan beberapa perintah statistik dalam satu kueri
](#CWL_QuerySyntax-stats-multi)
+ [

## Fungsi untuk digunakan dengan statistik
](#CWL_QuerySyntax-stats-functions)

## Visualisasikan data deret waktu
<a name="CWL_Insights-Visualizing-TimeSeries"></a>

Visualisasi deret waktu dapat digunakan dengan kueri yang memiliki karakteristik berikut:
+ Kueri berisi satu atau beberapa fungsi agregasi. Untuk informasi selengkapnya, lihat [Aggregation Functions in the Stats Command](#CWL_Insights_Aggregation_Functions).
+ Kueri menggunakan fungsi `bin()` untuk mengelompokkan data dengan satu bidang. 

Kueri-kueri ini dapat menghasilkan diagram garis, diagram area bertumpuk, diagram batang, dan diagram lingkaran. 

**Contoh**

Untuk tutorial lengkap, lihat [Tutorial: Jalankan kueri yang menghasilkan visualisasi deret waktu](CWL_AnalyzeLogData_VisualizationQuery.md). 

Berikut adalah contoh kueri lain yang dapat digunakan untuk visualisasi deret waktu.

Kueri berikut menghasilkan visualisasi nilai rata-rata bidang `myfield1`, dengan titik data yang dibuat setiap lima menit. Setiap titik data adalah agregasi dari rata-rata nilai `myfield1` dari log lima menit sebelumnya.

```
stats avg(myfield1) by bin(5m)
```

Kueri berikut menghasilkan visualisasi dari tiga nilai berdasarkan pada bidang-bidang yang berbeda, dengan titik data yang dibuat setiap lima menit. Visualisasi dihasilkan karena kueri berisi fungsi agregat dan menggunakan `bin()` sebagai bidang pengelompokan.

```
stats avg(myfield1), min(myfield2), max(myfield3) by bin(5m)
```

**Bagan garis dan batasan bagan area bertumpuk**

Pertanyaan yang membuat agregat informasi entri log, tetapi tidak menggunakan fungsi `bin()` dapat menghasilkan diagram batang. Namun, kueri tidak dapat menghasilkan diagram garis atau diagram area bertumpuk. Untuk informasi selengkapnya tentang tipe kueri ini, lihat [Visualisasikan data log yang dikelompokkan berdasarkan bidang](#CWL_Insights-Visualizing-ByFields).

## Visualisasikan data log yang dikelompokkan berdasarkan bidang
<a name="CWL_Insights-Visualizing-ByFields"></a>

Anda dapat menghasilkan diagram batang untuk kueri yang menggunakan fungsi `stats` dan satu atau beberapa fungsi agregasi. Untuk informasi selengkapnya, lihat [Aggregation Functions in the Stats Command](#CWL_Insights_Aggregation_Functions).

Untuk melihat visualisasi, jalankan kueri Anda. Lalu pilih tab **Visualization** (Visualisasi), pilih panah di sebelah **Line** (Garis), dan pilih **Bar** (Batang). Visualisasi dibatasi hingga 100 batang dalam diagram batang.

**Contoh**

Untuk tutorial lengkap, lihat [Tutorial: Jalankan kueri yang menghasilkan visualisasi yang dikelompokkan berdasarkan bidang log](CWL_AnalyzeLogData_VisualizationFieldQuery.md). Paragraf berikut mencakup lebih banyak contoh kueri untuk visualisasi berdasarkan bidang.

Kueri log alur VPC berikut menemukan jumlah rata-rata byte yang ditransfer per sesi untuk setiap alamat tujuan.

```
stats avg(bytes) by dstAddr
```

Anda juga dapat menghasilkan diagram yang mencakup lebih dari satu batang untuk setiap nilai yang dihasilkan. Misalnya, kueri log alur VPC berikut menemukan jumlah rata-rata dan maksimum byte yang ditransfer per sesi untuk setiap alamat tujuan.

```
stats avg(bytes), max(bytes) by dstAddr
```

Kueri berikut menemukan jumlah log kueri Amazon Route 53 untuk setiap jenis kueri.

```
stats count(*) by queryType
```

## Gunakan beberapa perintah statistik dalam satu kueri
<a name="CWL_QuerySyntax-stats-multi"></a>

Anda dapat menggunakan sebanyak dua `stats` perintah dalam satu kueri. Ini memungkinkan Anda untuk melakukan agregasi tambahan pada output agregasi pertama.

**Contoh: Query dengan dua `stats` perintah**

Misalnya, kueri berikut pertama-tama menemukan total volume lalu lintas di tempat sampah 5 menit, kemudian menghitung volume lalu lintas tertinggi, terendah, dan rata-rata di antara tempat sampah 5 menit tersebut.

```
FIELDS strlen(@message) AS message_length
| STATS sum(message_length)/1024/1024 as logs_mb BY bin(5m)
| STATS max(logs_mb) AS peak_ingest_mb, 
        min(logs_mb) AS min_ingest_mb, 
        avg(logs_mb) AS avg_ingest_mb
```

**Contoh: Gabungkan beberapa perintah statistik dengan fungsi lain seperti`filter`,, `fields` `bin`**

Anda dapat menggabungkan dua `stats` perintah dengan perintah lain seperti `filter` dan `fields` dalam satu kueri. Misalnya, kueri berikut menemukan jumlah alamat IP yang berbeda dalam sesi dan menemukan jumlah sesi berdasarkan platform klien, memfilter alamat IP tersebut, dan akhirnya menemukan rata-rata permintaan sesi per platform klien.

```
STATS count_distinct(client_ip) AS session_ips, 
      count(*) AS requests BY session_id, client_platform
| FILTER session_ips > 1
| STATS count(*) AS multiple_ip_sessions, 
        sum(requests) / count(*) AS avg_session_requests BY client_platform
```

Anda dapat menggunakan `bin` dan `dateceil` berfungsi dalam kueri dengan beberapa `stats` perintah. Misalnya, kueri berikut pertama-tama menggabungkan pesan menjadi blok 5 menit, kemudian menggabungkan blok 5 menit tersebut menjadi blok 10 menit dan menghitung volume lalu lintas tertinggi, terendah, dan rata-rata dalam setiap blok 10 menit.

```
FIELDS strlen(@message) AS message_length
| STATS sum(message_length) / 1024 / 1024 AS logs_mb BY BIN(5m) as @t
| STATS max(logs_mb) AS peak_ingest_mb, 
        min(logs_mb) AS min_ingest_mb,
        avg(logs_mb) AS avg_ingest_mb BY dateceil(@t, 10m)
```

**Catatan dan batasan**

Kueri dapat memiliki maksimal dua `stats` perintah. Kuota ini tidak dapat diubah. 

Jika Anda menggunakan `limit` perintah `sort` atau, itu harus muncul setelah `stats` perintah kedua. Jika sebelum `stats` perintah kedua, kueri tidak valid.

Ketika kueri memiliki dua `stats` perintah, sebagian hasil dari kueri tidak mulai ditampilkan sampai `stats` agregasi pertama selesai.

Dalam `stats` perintah kedua dalam satu kueri, Anda hanya dapat merujuk ke bidang yang didefinisikan dalam `stats` perintah pertama. Misalnya, kueri berikut tidak valid karena `@message` bidang tidak akan tersedia setelah `stats` agregasi pertama.

```
FIELDS @message
| STATS SUM(Fault) by Operation
# You can only reference `SUM(Fault)` or Operation at this point
| STATS MAX(strlen(@message)) AS MaxMessageSize # Invalid reference to @message
```

Bidang apa pun yang Anda referensikan setelah `stats` perintah pertama harus didefinisikan dalam `stats` perintah pertama itu.

```
STATS sum(x) as sum_x by y, z
| STATS max(sum_x) as max_x by z
# You can only reference `max(sum_x)`, max_x or z at this point
```

**penting**  
`bin`Fungsi selalu secara implisit menggunakan bidang. `@timestamp` Ini berarti Anda tidak dapat menggunakan `bin` `stats` perintah kedua tanpa menggunakan `stats` perintah pertama untuk menyebarkan `timestamp` bidang. Misalnya, kueri berikut tidak valid.  

```
FIELDS strlen(@message) AS message_length
 | STATS sum(message_length) AS ingested_bytes BY @logStream
 | STATS avg(ingested_bytes) BY bin(5m) # Invalid reference to @timestamp field
```
Sebagai gantinya, tentukan `@timestamp` bidang di `stats` perintah pertama, dan kemudian Anda dapat menggunakannya dengan `dateceil` `stats` perintah kedua seperti pada contoh berikut.  

```
FIELDS strlen(@message) AS message_length
 | STATS sum(message_length) AS ingested_bytes, max(@timestamp) as @t BY @logStream
 | STATS avg(ingested_bytes) BY dateceil(@t, 5m)
```

## Fungsi untuk digunakan dengan statistik
<a name="CWL_QuerySyntax-stats-functions"></a><a name="CWL_Insights_Aggregation_Functions"></a>

CloudWatch Logs Insights mendukung fungsi agregasi statistik dan fungsi non-agregasi statistik.

 Gunakan fungsi statsaggregation dalam `stats` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|  `avg(fieldName: NumericLogField)` |  nomor |  Rata-rata nilai di bidang yang ditentukan.  | 
|  `count()` `count(fieldName: LogField)` |  nomor |  Menghitung log acara. `count()` (atau `count(*)`) menghitung semua kejadian yang dikembalikan oleh kueri, sementara `count(fieldName)` menghitung semua catatan yang menyertakan nama bidang yang ditentukan.  | 
|  `count_distinct(fieldName: LogField)` |  nomor |  Mengembalikan jumlah nilai unik untuk bidang. Jika bidang memiliki kardinalitas yang sangat tinggi (mengandung banyak nilai unik), nilai yang dikembalikan oleh `count_distinct` hanyalah sebuah perkiraan.  | 
|  `max(fieldName: LogField)` |  LogFieldValue |  Nilai maksimum untuk bidang log ini dalam log yang dikueri.  | 
|  `min(fieldName: LogField)` |  LogFieldValue |  Nilai minimum untuk bidang log ini dalam log yang dikueri.  | 
|  `pct(fieldName: LogFieldValue, percent: number)` |  LogFieldValue |  Persentil menunjukkan posisi relatif dari nilai dalam rangkaian data. Misalnya, `pct(@duration, 95)` mengembalikan nilai `@duration` di mana 95 persen dari nilai `@duration` lebih rendah dari nilai ini, dan 5 persen lebih tinggi dari nilai ini.  | 
|  `stddev(fieldName: NumericLogField)` |  nomor |  Standar deviasi di bidang yang ditentukan.  | 
|  `sum(fieldName: NumericLogField)` |  nomor |  Jumlah nilai di bidang yang ditentukan.  | 

 **Statistik fungsi non-agregasi** <a name="CWL_Insights_Non-Aggregation_Functions"></a>

 Gunakan fungsi non-agregasi dalam `stats` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|  `earliest(fieldName: LogField)` |  LogField |  Mengembalikan nilai `fieldName` dari log acara yang memiliki stempel waktu paling awal dalam log yang dikueri.  | 
|  `latest(fieldName: LogField)` |  LogField |  Mengembalikan nilai `fieldName` dari log acara yang memiliki stempel waktu paling akhir dalam log yang dikueri.  | 
|  `sortsFirst(fieldName: LogField)` |  LogField |  Mengembalikan nilai `fieldName` yang ada di urutan pertama dalam log yang dikueri.  | 
|  `sortsLast(fieldName: LogField)` |  LogField |  Mengembalikan nilai `fieldName` yang ada di urutan terakhir dalam log yang dikueri.  | 

# batasan
<a name="CWL_QuerySyntax-Limit"></a>

 Gunakan `limit` untuk menentukan jumlah peristiwa log yang Anda ingin kueri Anda kembalikan. Jika Anda menghilangkan`limit`, kueri akan mengembalikan sebanyak 10.000 peristiwa log dalam hasil. 

Misalnya, contoh berikut hanya mengembalikan 25 peristiwa log terbaru

```
fields @timestamp, @message | sort @timestamp desc | limit 25
```

# dedup
<a name="CWL_QuerySyntax-Dedup"></a>

 Gunakan `dedup` untuk menghapus hasil duplikat berdasarkan nilai tertentu di bidang yang Anda tentukan. Anda dapat menggunakan `dedup` dengan satu atau lebih bidang. Jika Anda menentukan satu bidang dengan`dedup`, hanya satu peristiwa log yang dikembalikan untuk setiap nilai unik bidang itu. Jika Anda menentukan beberapa bidang, maka satu peristiwa log dikembalikan untuk setiap kombinasi nilai unik untuk bidang tersebut.

Duplikat dibuang berdasarkan urutan pengurutan, dengan hanya hasil pertama dalam urutan pengurutan yang disimpan. Kami menyarankan Anda mengurutkan hasil Anda sebelum memasukkannya melalui `dedup` perintah. Jika hasilnya tidak diurutkan sebelum dijalankan`dedup`, maka urutan urutan menurun default yang digunakan `@timestamp` digunakan. 

Nilai nol tidak dianggap duplikat untuk evaluasi. Peristiwa log dengan nilai null untuk salah satu bidang tertentu dipertahankan. Untuk menghilangkan bidang dengan nilai nol, gunakan **`filter`**menggunakan `isPresent(field)` fungsi. 

Satu-satunya perintah query yang dapat Anda gunakan dalam kueri setelah `dedup` perintah adalah`limit`.

Saat Anda menggunakan `dedup` kueri, konsol akan menampilkan pesan seperti **Menampilkan X catatan Y**, di mana X adalah jumlah hasil deduplikasi dan Y adalah jumlah total rekaman yang cocok sebelum deduplikasi. Ini menunjukkan bahwa catatan duplikat telah dihapus dan tidak berarti bahwa data hilang.

 **Contoh: Lihat hanya peristiwa log terbaru untuk setiap nilai unik bidang bernama `server`** 

 Contoh berikut menampilkan`timestamp`,`server`,`severity`, dan `message` bidang hanya untuk acara terbaru untuk setiap nilai unik`server`. 

```
fields @timestamp, server, severity, message 
| sort @timestamp desc 
| dedup server
```

Untuk lebih banyak contoh kueri Wawasan CloudWatch Log, lihat. [Kueri umum](CWL_QuerySyntax-examples.md#CWL_QuerySyntax-examples-general) 

# membuka kedok
<a name="CWL_QuerySyntax-Unmask"></a>

 Gunakan `unmask` untuk menampilkan semua konten peristiwa log yang memiliki beberapa konten yang disembunyikan karena kebijakan perlindungan data. Untuk menggunakan perintah ini, Anda harus memiliki `logs:Unmask` izin.

Untuk informasi selengkapnya tentang perlindungan data di grup log, lihat[Membantu melindungi data log sensitif dengan masking](mask-sensitive-log-data.md). 

# unnest
<a name="CWL_QuerySyntax-Unnest"></a>

 Gunakan `unnest` untuk meratakan daftar yang diambil sebagai masukan untuk menghasilkan beberapa catatan dengan satu catatan untuk setiap elemen dalam daftar. Berdasarkan jumlah item yang terkandung dalam bidang, perintah ini membuang catatan saat ini dan menghasilkan catatan baru. Setiap catatan mencakup`unnested_field`, yang mewakili item. Semua bidang lainnya berasal dari catatan asli. 

 Input untuk `unnest` adalah`LIST`, yang berasal dari `jsonParse` fungsi. Untuk informasi selengkapnya, lihat [Jenis struktur](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html#CWL_QuerySyntax-structure-types). Tipe lain, seperti`MAP`, `String` dan`numbers`, diperlakukan sebagai daftar dengan satu item di`unnest`. 

**Struktur perintah**  
 Contoh berikut menjelaskan format perintah ini. 

```
unnest field into unnested_field
```

**Kueri contoh**  
 Contoh berikut mem-parsing string objek JSON dan memperluas daftar peristiwa bidang. 

```
fields jsonParse(@message) as json_message 
| unnest json_message.events into event
| display event.name
```

Peristiwa log untuk kueri contoh ini bisa berupa string JSON sebagai berikut:

```
{
   "events": [
        {
            "name": "exception"
        },
        {
            "name": "user action"
        }
   ]
}
```

Dalam hal ini, kueri sampel menghasilkan dua catatan dalam hasil kueri, satu dengan `event.name` as `exception` dan yang lain dengan `event.name` sebagai **tindakan pengguna**

**Kueri contoh**  
 Contoh berikut meratakan daftar dan kemudian menyaring item. 

```
fields jsonParse(@message) as js 
| unnest js.accounts into account 
| filter account.type = "internal"
```

**Kueri contoh**  
 Contoh berikut meratakan daftar agregasi. 

```
fields jsonParse(trimmedData) as accounts 
| unnest accounts into account 
| stats sum(account.droppedSpans) as n by account.accountId 
| sort n desc 
| limit 10
```

# pencarian
<a name="CWL_QuerySyntax-Lookup"></a>

Gunakan `lookup` untuk memperkaya hasil kueri Anda dengan data referensi dari tabel pencarian. Tabel pencarian berisi data CSV yang Anda unggah ke Amazon CloudWatch Logs. Saat kueri berjalan, `lookup` perintah mencocokkan bidang dalam peristiwa log Anda terhadap bidang di tabel pencarian dan menambahkan bidang keluaran yang ditentukan ke hasil.

Gunakan tabel pencarian untuk skenario pengayaan data seperti memetakan pengguna IDs ke detail pengguna, kode produk ke informasi produk, atau kode kesalahan untuk deskripsi kesalahan.

## Membuat dan mengelola tabel pencarian
<a name="CWL_QuerySyntax-Lookup-tables"></a>

Sebelum Anda dapat menggunakan `lookup` perintah dalam kueri, Anda harus membuat tabel pencarian. Anda dapat membuat dan mengelola tabel pencarian dari CloudWatch konsol atau dengan menggunakan Amazon CloudWatch Logs API.

**Untuk membuat tabel pencarian (konsol)**  


1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Pengaturan**, lalu pilih tab **Log**.

1. Gulir ke **tabel Pencarian** dan pilih **Kelola**.

1. Pilih **Buat tabel pencarian**.

1. Masukkan nama untuk tabel pencarian. Nama hanya dapat berisi karakter alfanumerik, tanda hubung, dan garis bawah.

1. (Opsional) Masukkan deskripsi.

1. Unggah file CSV. File harus menyertakan baris header dengan nama kolom, gunakan pengkodean UTF-8, dan tidak melebihi 10 MB.

1. (Opsional) Tentukan AWS KMS kunci untuk mengenkripsi data tabel.

1. Pilih **Buat**.

Setelah membuat tabel pencarian, Anda dapat melihatnya di editor kueri Wawasan CloudWatch Log. Pilih tab **Lookup tables** untuk menelusuri tabel yang tersedia dan bidangnya.

Untuk memperbarui tabel pencarian, pilih tabel dan pilih **Tindakan**, **Perbarui**. Unggah file CSV baru untuk menggantikan semua konten yang ada. Untuk menghapus tabel pencarian, pilih **Tindakan**, **Hapus**.

**catatan**  
Anda dapat membuat hingga 100 tabel pencarian per akun per Wilayah AWS akun. File CSV dapat mencapai 10 MB. Anda juga dapat mengelola tabel pencarian dengan menggunakan Amazon CloudWatch Logs API. Untuk informasi selengkapnya, lihat [CreateLookupTable](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLookupTable.html)di *Referensi API Amazon CloudWatch Logs*.

**catatan**  
Jika tabel pencarian dienkripsi dengan kunci KMS, penelepon harus memiliki `kms:Decrypt` izin pada kunci (kunci KMS yang digunakan untuk mengenkripsi tabel pencarian) untuk menggunakan `StartQuery` API dengan kueri yang mereferensikan tabel pencarian itu. Untuk informasi selengkapnya, lihat [Enkripsi tabel pencarian di CloudWatch Log menggunakan AWS Key Management Service](encrypt-lookup-tables-kms.md).

## Sintaks kueri untuk pencarian
<a name="CWL_QuerySyntax-Lookup-syntax"></a>

**Struktur perintah**  
Berikut ini menunjukkan format perintah ini.

```
lookup table lookup-field as log-field [,...] output-mode output-field[,...]
```

Perintah menggunakan argumen berikut:
+ `table`— Nama tabel pencarian yang akan digunakan.
+ `lookup-field`— Bidang di tabel pencarian untuk dicocokkan.
+ `log-field`— Bidang di acara log Anda untuk dicocokkan. Pertandingannya tepat dan peka huruf besar/kecil.
+ `output-mode`— Tentukan `OUTPUT` untuk menambahkan bidang output ke hasil. Jika bidang dengan nama yang sama sudah ada dalam peristiwa log, itu akan ditimpa.
+ `output-field`— Satu atau lebih bidang dari tabel pencarian untuk ditambahkan ke hasil.

**Contoh: Perkaya peristiwa log dengan detail pengguna**  
Misalkan Anda memiliki grup log dengan peristiwa yang berisi `id` bidang, dan tabel pencarian bernama `user_data` dengan kolom`id`,, `name``email`, dan`department`. Kueri berikut memperkaya setiap peristiwa log dengan nama pengguna, email, dan departemen dari tabel pencarian.

```
fields action, status, name, email, department
| lookup user_data id OUTPUT name, email, department
```

**Contoh: Gunakan pencarian dengan agregasi**  
Anda dapat menggunakan bidang output pencarian dengan fungsi agregasi. Kueri berikut memperkaya peristiwa log dengan detail pengguna dan kemudian menghitung peristiwa yang dikelompokkan berdasarkan alamat email.

```
fields user_id, action, username, email, department
| lookup user_data user_id OUTPUT username, email, department
| stats count(*) by email
```

**Contoh: Gunakan pencarian dengan filter**  
Anda dapat memfilter hasil berdasarkan bidang yang dikembalikan oleh pencarian. Kueri berikut memperkaya peristiwa log dan kemudian memfilter untuk hanya menampilkan peristiwa dari departemen tertentu.

```
fields user_id, action
| lookup user_data user_id OUTPUT username, email, department
| filter department = "Engineering"
```

# Boolean, perbandingan, numerik, datetime, dan fungsi lainnya
<a name="CWL_QuerySyntax-operations-functions"></a>

 CloudWatch Log Insights mendukung banyak operasi dan fungsi lain dalam kueri, seperti yang dijelaskan di bagian berikut. 

**Topics**
+ [

## Operator aritmatika
](#CWL_QuerySyntax-operations-arithmetic)
+ [

## Operator Boolean
](#CWL_QuerySyntax-operations-Boolean)
+ [

## Operator perbandingan
](#CWL_QuerySyntax-operations-comparison)
+ [

## Operator numerik
](#CWL_QuerySyntax-operations-numeric)
+ [

## Jenis struktur
](#CWL_QuerySyntax-structure-types)
+ [

## Fungsi datetime
](#CWL_QuerySyntax-datetime)
+ [

## Fungsi umum
](#CWL_QuerySyntax-general-functions)
+ [

## Fungsi JSON
](#CWL_QuerySyntax-json-functions)
+ [

## Fungsi string alamat IP
](#CWL_QuerySyntax-IPaddress-functions)
+ [

## Fungsi string
](#CWL_QuerySyntax-string-functions)

## Operator aritmatika
<a name="CWL_QuerySyntax-operations-arithmetic"></a>

 Operator aritmatika menerima tipe data numerik sebagai argumen dan mengembalikan hasil numerik. Gunakan operator aritmatika dalam `filter` dan `fields` perintah dan sebagai argumen untuk fungsi lainnya. 


| Operasi | Deskripsi | 
| --- | --- | 
|  `a + b` |  Penambahan  | 
|  `a - b` |  Pengurangan  | 
|  `a * b` |  Perkalian  | 
|  `a / b` |  Pembagian  | 
|  `a ^ b` |   Eksponensiasi (pengembalian) `2 ^ 3` `8`   | 
|  `a % b` |   Sisa atau modulus (pengembalian) `10 % 3` `1`   | 

## Operator Boolean
<a name="CWL_QuerySyntax-operations-Boolean"></a>

 Gunakan operator Boolean`and`,`or`, dan`not`. 

**catatan**  
 Gunakan operator Boolean hanya dalam fungsi yang mengembalikan nilai **TRUE** atau **FALSE**. 

## Operator perbandingan
<a name="CWL_QuerySyntax-operations-comparison"></a>

 Operator perbandingan menerima semua tipe data sebagai argumen dan mengembalikan hasil Boolean. Gunakan operasi perbandingan dalam `filter` perintah dan sebagai argumen untuk fungsi lainnya. 


| Operator | Deskripsi | 
| --- | --- | 
|   `=`   |   Sama   | 
|   `!=`   |   Tidak sama   | 
|   `<`   |   Kurang dari   | 
|  `>` |   Lebih besar dari   | 
|  `<=` |   Kurang dari atau sama dengan   | 
|   `>=`   |   Lebih besar dari atau sama dengan   | 

## Operator numerik
<a name="CWL_QuerySyntax-operations-numeric"></a>

 Operasi numerik menerima tipe data numerik sebagai argumen dan mengembalikan hasil numerik. Gunakan operasi numerik dalam `filter` dan `fields` perintah dan sebagai argumen untuk fungsi lainnya. 


| Operasi | Tipe Hasil | Deskripsi | 
| --- | --- | --- | 
|   `abs(a: number)`   |   number   |   Nilai absolut   | 
|   `ceil(a: number)`   |   number   |   Bulat ke langit-langit (bilangan bulat terkecil yang lebih besar dari nilai) `a`   | 
|   `floor(a: number)`   |  number |   Bulat ke lantai (bilangan bulat terbesar yang lebih kecil dari nilai) `a`   | 
|   `greatest(a: number, ...numbers: number[])`   |   number   |   Mengembalikan nilai terbesar   | 
|   `least(a: number, ...numbers: number[])`   |  number |   Mengembalikan nilai terkecil   | 
|   `log(a: number)`   |   number   |   Log alami   | 
|   `sqrt(a: number)`   |   number   |   Akar kuadrat   | 

## Jenis struktur
<a name="CWL_QuerySyntax-structure-types"></a>

 Peta atau daftar adalah tipe struktur dalam Wawasan CloudWatch Log yang memungkinkan Anda mengakses dan menggunakan atribut untuk kueri. 

**Contoh: Untuk mendapatkan peta atau daftar**  
 Gunakan `jsonParse` untuk mengurai bidang yang berupa string json ke dalam peta atau daftar. 

```
fields jsonParse(@message) as json_message
```

**Contoh: Untuk mengakses atribut**  
 Gunakan operator akses titik (map.attribute) untuk mengakses item di peta.. Jika atribut dalam peta berisi karakter khusus, gunakan backticks untuk melampirkan nama atribut (map.attributes. `special.char`). 

```
fields jsonParse(@message) as json_message
| stats count() by json_message.status_code
```

 Gunakan operator akses braket (list [index]) untuk mengambil item pada posisi tertentu dalam daftar. 

```
fields jsonParse(@message) as json_message
| filter json_message.users[1].action = "PutData"
```

 Bungkus karakter khusus dalam backticks (``) ketika karakter khusus hadir dalam nama kunci. 

```
fields jsonParse(@message) as json_message
| filter json_message.`user.id` = "123"
```

**Contoh: hasil kosong**  
 Peta dan daftar diperlakukan sebagai null untuk fungsi string, nomor, dan datetime. 

```
fields jsonParse(@message) as json_message
| display toupper(json_message)
```

 Membandingkan peta dan daftar dengan bidang lain menghasilkan`false`. 

**catatan**  
 Menggunakan peta dan daftar di `dedup``pattern`,`sort`,, dan `stats` tidak didukung. 

## Fungsi datetime
<a name="CWL_QuerySyntax-datetime"></a>

 **Fungsi Datetime** 

 Gunakan fungsi datetime dalam `fields` dan `filter` perintah dan sebagai argumen untuk fungsi lainnya. Gunakan fungsi ini untuk membuat bucket waktu untuk kueri dengan fungsi agregat. Gunakan periode waktu yang terdiri dari angka dan salah satu dari yang berikut:
+ `ms`untuk milidetik 
+ `s`selama beberapa detik 
+ `m`selama beberapa menit 
+ `h`selama berjam-jam 

 Misalnya, `10m` adalah 10 menit, dan `1h` 1 jam. 

**catatan**  
Gunakan unit waktu yang paling tepat untuk fungsi datetime Anda. CloudWatch Log membatasi permintaan Anda sesuai dengan satuan waktu yang Anda pilih. Misalnya, ini membatasi 60 sebagai nilai maksimum untuk setiap permintaan yang menggunakan`s`. Jadi, jika Anda menentukan`bin(300s)`, CloudWatch Log sebenarnya mengimplementasikan ini sebagai 60 detik, karena 60 adalah jumlah detik dalam satu menit sehingga CloudWatch Log tidak akan menggunakan angka yang lebih tinggi dari 60 dengan`s`. Untuk membuat ember 5 menit, gunakan `bin(5m)` sebagai gantinya.  
Tutup untuk `ms` adalah 1000, tutup untuk `s` dan `m` 60, dan tutupnya `h` adalah 24.

Tabel berikut berisi daftar fungsi datetime yang berbeda yang dapat Anda gunakan dalam perintah query. Tabel mencantumkan jenis hasil setiap fungsi dan berisi deskripsi dari setiap fungsi. 

**Tip**  
 Saat Anda membuat perintah kueri, Anda dapat menggunakan pemilih interval waktu untuk memilih periode waktu yang ingin Anda kueri. Misalnya, Anda dapat mengatur periode waktu antara interval 5 dan 30 menit; interval 1, 3, dan 12 jam; atau kerangka waktu khusus. Anda juga dapat mengatur periode waktu antara tanggal tertentu. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|  `bin(period: Period)` |  Stempel waktu |  Membulatkan nilai `@timestamp` ke periode waktu tertentu dan kemudian memotong. Misalnya, `bin(5m)` bulatkan nilai `@timestamp` ke 5 menit terdekat. Anda dapat menggunakan ini untuk mengelompokkan beberapa entri log bersama-sama dalam kueri. Contoh berikut mengembalikan jumlah pengecualian per jam: <pre>filter @message like /Exception/ <br />    | stats count(*) as exceptionCount by bin(1h)<br />    | sort exceptionCount desc</pre> Satuan waktu dan singkatan berikut didukung dengan `bin` fungsi tersebut. Untuk semua unit dan singkatan yang menyertakan lebih dari satu karakter, menambahkan s ke pluralisasi didukung. Jadi keduanya `hr` dan `hrs` bekerja untuk menentukan jam. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/AmazonCloudWatch/latest/logs/CWL_QuerySyntax-operations-functions.html)  | 
|  `datefloor(timestamp: Timestamp, period: Period)` |  Stempel waktu |  Memotong stempel waktu ke periode tertentu. Misalnya, `datefloor(@timestamp, 1h)` memotong semua nilai `@timestamp` ke bagian bawah jam.  | 
|  `dateceil(timestamp: Timestamp, period: Period)` |  Stempel waktu |  Membulatkan stempel waktu ke periode tertentu dan kemudian memotong. Misalnya, `dateceil(@timestamp, 1h)` memotong semua nilai `@timestamp` ke bagian atas jam.  | 
|  `fromMillis(fieldName: number)` |  Stempel waktu |  Menafsirkan bidang input sebagai jumlah milidetik sejak jangka waktu Unix dan mengubahnya menjadi stempel waktu.  | 
|  `toMillis(fieldName: Timestamp)` |  nomor |  Mengonversi stempel waktu yang ditemukan di bidang bernama menjadi angka yang mewakili milidetik sejak jangka waktu Unix. Misalnya, `toMillis(@timestamp)` mengubah stempel waktu `2022-01-14T13:18:031.000-08:00` menjadi. `1642195111000`  | 
|  `now()`  |  number  |  Mengembalikan waktu pemrosesan query dimulai, dalam detik epoch. Fungsi ini tidak membutuhkan argumen. Anda dapat menggunakan ini untuk memfilter hasil kueri Anda sesuai dengan waktu saat ini. Misalnya, query berikut mengembalikan semua kesalahan 4xx dari dua jam terakhir: <pre>parse @message "Status Code: *;" as statusCode\n <br />| filter statusCode >= 400 and statusCode <= 499  \n <br />| filter toMillis(@timestamp) >= (now() * 1000 - 7200000)</pre> Contoh berikut mengembalikan semua entri log dari lima jam terakhir yang berisi kata `error` atau `failure` <pre>fields @timestamp, @message <br />| filter @message like /(?i)(error|failure)/ <br />| filter toMillis(@timestamp) >= (now() * 1000 - 18000000)</pre>  | 

**catatan**  
 Saat ini, CloudWatch Logs Insights tidak mendukung pemfilteran log dengan stempel waktu yang dapat dibaca manusia. 

## Fungsi umum
<a name="CWL_QuerySyntax-general-functions"></a>

 **Fungsi umum** 

 Gunakan fungsi umum dalam `fields` dan `filter` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|   `ispresent(fieldName: LogField)`   |   Boolean   |   Mengembalikan `true` jika bidang ada   | 
|   `coalesce(fieldName: LogField, ...fieldNames: LogField[])`   |   LogField   |   Mengembalikan nilai non-null pertama dari daftar   | 

## Fungsi JSON
<a name="CWL_QuerySyntax-json-functions"></a>

 **Fungsi JSON** 

 Gunakan fungsi JSON dalam `fields` dan `filter` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|   `jsonParse(fieldName: string)`   |   Peta \$1 Daftar \$1 Kosong   |   Mengembalikan peta atau daftar ketika input adalah representasi string dari objek JSON atau array JSON. Mengembalikan nilai kosong, jika masukan bukan salah satu representasi.   | 
|   `jsonStringify(fieldName: Map \| List)`   |   String   |   Mengembalikan string JSON dari peta atau daftar data.   | 

## Fungsi string alamat IP
<a name="CWL_QuerySyntax-IPaddress-functions"></a>

 **Fungsi string alamat IP** 

 Gunakan fungsi string alamat IP dalam `filter` dan `fields` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|  `isValidIp(fieldName: string)` |  boolean |  Mengembalikan `true` jika bidang adalah valid IPv4 atau IPv6 alamat.  | 
|  `isValidIpV4(fieldName: string)` |  boolean |  Mengembalikan `true` jika bidang adalah IPv4 alamat yang valid.  | 
|  `isValidIpV6(fieldName: string)` |  boolean |  Mengembalikan `true` jika bidang adalah IPv6 alamat yang valid.  | 
|  `isIpInSubnet(fieldName: string, subnet: string)` |  boolean |  Mengembalikan `true` jika bidang adalah valid IPv4 atau IPv6 alamat dalam v4 atau v6 subnet yang ditentukan. Saat Anda menentukan subnet, gunakan notasi CIDR seperti `192.0.2.0/24` atau`2001:db8::/32`, di mana `192.0.2.0` atau `2001:db8::` merupakan awal dari blok CIDR.  | 
|  `isIpv4InSubnet(fieldName: string, subnet: string)` |  boolean |  Mengembalikan `true` jika bidang adalah IPv4 alamat yang valid dalam subnet v4 yang ditentukan. Saat Anda menentukan subnet, gunakan notasi CIDR seperti `192.0.2.0/24` di `192.0.2.0` mana awal blok CIDR..  | 
|  `isIpv6InSubnet(fieldName: string, subnet: string)` |  boolean |  Mengembalikan `true` jika bidang adalah IPv6 alamat yang valid dalam subnet v6 yang ditentukan. Saat Anda menentukan subnet, gunakan notasi CIDR seperti `2001:db8::/32` di `2001:db8::` mana awal blok CIDR.  | 

## Fungsi string
<a name="CWL_QuerySyntax-string-functions"></a>

 **Fungsi string** 

 Gunakan fungsi string dalam `fields` dan `filter` perintah dan sebagai argumen untuk fungsi lainnya. 


| Fungsi | Tipe hasil | Deskripsi | 
| --- | --- | --- | 
|  `isempty(fieldName: string)` |  Bilangan |  Mengembalikan `1` jika bidang tidak ada atau string kosong.  | 
|  `isblank(fieldName: string)` |  Bilangan |  Mengembalikan `1` jika bidang tidak ada, string kosong, atau hanya berisi spasi.  | 
|  `concat(str: string, ...strings: string[])` |  string |  Menyatukan string.  | 
|  `ltrim(str: string)` `ltrim(str: string, trimChars: string)` |  string |  Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari kiri string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter `trimChars` dari kiri`str`. Misalnya, `ltrim("xyZxyfooxyZ","xyZ")` mengembalikan `"fooxyZ"`.  | 
|  `rtrim(str: string)` `rtrim(str: string, trimChars: string)` |  string |  Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari kanan string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter `trimChars` dari dari kanan`str`. Misalnya, `rtrim("xyZfooxyxyZ","xyZ")` mengembalikan `"xyZfoo"`.  | 
|  `trim(str: string)` `trim(str: string, trimChars: string)` |  string |  Jika fungsi tidak memiliki argumen kedua, ia menghapus spasi putih dari kedua ujung string. Jika fungsi memiliki argumen string kedua, itu tidak menghapus spasi putih. Sebaliknya, ia menghapus karakter `trimChars` dari kedua sisi`str`. Misalnya, `trim("xyZxyfooxyxyZ","xyZ")` mengembalikan `"foo"`.  | 
|  `strlen(str: string)` |  nomor |  Mengembalikan panjang string dalam poin kode Unicode.  | 
|  `toupper(str: string)` |  string |  Mengonversi string menjadi huruf besar.  | 
|  `tolower(str: string)` |  string |  Mengonversi string menjadi huruf kecil.  | 
|  `substr(str: string, startIndex: number)` `substr(str: string, startIndex: number, length: number)` |  string |  Mengembalikan substring dari indeks yang ditentukan oleh argumen angka ke akhir string. Jika fungsi memiliki argumen angka kedua, itu berisi panjang substring yang akan diambil. Misalnya, `substr("xyZfooxyZ",3, 3)` mengembalikan `"foo"`.  | 
|  `replace(fieldName: string, searchValue: string, replaceValue: string)` |  string |  Mengganti semua `searchValue` dalam `fieldName: string`dengan `replaceValue`. Misalnya, fungsi `replace(logGroup,"smoke_test","Smoke")` mencari peristiwa log di mana bidang `logGroup` berisi nilai string `smoke_test` dan menggantikan nilai dengan string. `Smoke`  | 
|  `strcontains(str: string, searchValue: string)` |  number |  Mengembalikan 1 jika `str` berisi `searchValue` dan 0 sebaliknya.  | 

# Bidang yang berisi karakter khusus
<a name="CWL_QuerySyntax-Guidelines"></a>

Jika bidang berisi karakter non-alfanumerik selain `@` simbol atau periode (`.`), Anda harus mengelilingi bidang dengan karakter backtick (). ``` Misalnya, bidang log `foo-bar` harus diapit backticks (``foo-bar``) karena berisi karakter non-alfanumerik, tanda hubung (). `-`

# Gunakan alias dan komentar dalam kueri
<a name="CWL_QuerySyntax-alias"></a>

 Buat kueri yang berisi alias. Gunakan alias untuk mengganti nama bidang log atau saat mengekstrak nilai ke dalam bidang. Gunakan kata kunci `as` untuk memberikan bidang log atau menghasilkan alias. Anda dapat menggunakan lebih dari satu alias dalam kueri. Anda dapat menggunakan alias dalam perintah berikut: 
+  `fields` 
+  `parse` 
+  `sort` 
+  ` stats ` 

 Contoh berikut menunjukkan cara membuat kueri yang berisi alias. 

 **Contoh** 

 Query berisi alias dalam `fields` perintah. 

```
fields @timestamp, @message, accountId as ID
| sort @timestamp desc
| limit 20
```

 Query mengembalikan nilai-nilai untuk bidang`@timestamp`,`@message`, dan`accountId`. Hasilnya diurutkan dalam urutan menurun dan dibatasi hingga 20. Nilai untuk `accountId` tercantum di bawah alias`ID`. 

 **Contoh** 

 Kueri berisi alias dalam `stats` perintah `sort` dan. 

```
stats count(*) by duration as time 
| sort time desc
```

 Kueri menghitung berapa kali bidang `duration` terjadi di grup log dan mengurutkan hasil dalam urutan menurun. Nilai untuk `duration` tercantum di bawah alias`time`. 

## Gunakan komentar
<a name="CWL_QuerySyntax-comments"></a>

 CloudWatch Log Insights mendukung komentar dalam kueri. Gunakan karakter hash (**\$1**) untuk memicu komentar. Anda dapat menggunakan komentar untuk mengabaikan baris dalam kueri atau kueri dokumen. 

 **Contoh: Query** 

 Ketika query berikut dijalankan, baris kedua diabaikan. 

```
fields @timestamp, @message, accountId
# | filter accountId not like "7983124201998"
| sort @timestamp desc
| limit 20
```

# Memulai dengan Logs Insights QL: Tutorial kueri
<a name="CWL_AnalyzeLogData_Tutorials"></a>

Bagian berikut mencakup contoh tutorial kueri untuk membantu Anda memulai dengan Wawasan Log QL.

**Topics**
+ [

# Tutorial: Jalankan dan modifikasi kueri sampel
](CWL_AnalyzeLogData_RunSampleQuery.md)
+ [

# Tutorial: Jalankan kueri dengan fungsi agregasi
](CWL_AnalyzeLogData_AggregationQuery.md)
+ [

# Tutorial: Jalankan kueri yang menghasilkan visualisasi yang dikelompokkan berdasarkan bidang log
](CWL_AnalyzeLogData_VisualizationFieldQuery.md)
+ [

# Tutorial: Jalankan kueri yang menghasilkan visualisasi deret waktu
](CWL_AnalyzeLogData_VisualizationQuery.md)

# Tutorial: Jalankan dan modifikasi kueri sampel
<a name="CWL_AnalyzeLogData_RunSampleQuery"></a>

Tutorial berikut membantu Anda memulai dengan Wawasan CloudWatch Log. Anda menjalankan kueri sampel di Logs Insights QL, lalu melihat cara memodifikasi dan menjalankannya kembali.

Untuk menjalankan kueri, Anda harus sudah memiliki log yang disimpan di CloudWatch Log. Jika Anda sudah menggunakan CloudWatch Log dan memiliki grup log dan aliran log yang disiapkan, Anda siap untuk memulai. Anda mungkin juga sudah memiliki log jika Anda menggunakan layanan seperti AWS CloudTrail, Amazon Route 53, atau Amazon VPC dan Anda telah menyiapkan log dari layanan tersebut untuk masuk ke CloudWatch Log. Untuk informasi selengkapnya tentang mengirim CloudWatch log ke Log, lihat[Memulai dengan CloudWatch Log](CWL_GettingStarted.md).

Kueri dalam Wawasan CloudWatch Log mengembalikan sekumpulan bidang dari peristiwa log atau hasil agregasi matematis atau operasi lain yang dilakukan pada peristiwa log. Tutorial ini menunjukkan kueri yang mengembalikan daftar log acara.

## Jalankan kueri sampel
<a name="CWL_AnalyzeLogData_RunQuerySample"></a>

**Untuk menjalankan kueri sampel Wawasan CloudWatch Log**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Log**, lalu pilih **Wawasan Log**.

   Pada halaman **Wawasan Log**, editor kueri berisi kueri default di Logs Insights QL yang menampilkan 20 peristiwa log terbaru.

1. Dalam menu tarik-turun **Pilih grup log**, pilih satu atau beberapa grup log untuk kueri.

    Jika ini adalah akun pemantauan dalam pengamatan CloudWatch lintas akun, Anda dapat memilih grup log di akun sumber serta akun pemantauan. Satu kueri dapat menanyakan log dari akun yang berbeda sekaligus.

   Anda dapat memfilter grup log berdasarkan nama grup log, ID akun, atau label akun.

   Saat Anda memilih grup log di kelas log Standar, Wawasan CloudWatch Log secara otomatis mendeteksi bidang data dalam grup. Untuk melihat bidang yang ditemukan, pilih menu **Fields** di dekat kanan atas halaman.
**catatan**  
Bidang yang ditemukan hanya didukung untuk grup log di kelas log Standar. Untuk informasi selengkapnya tentang kelas log, lihat[Kelas log](CloudWatch_Logs_Log_Classes.md).

1. (Opsional) Gunakan pemilih interval waktu untuk memilih periode waktu yang ingin Anda kueri.

   Anda dapat memilih antara interval 5 dan 30 menit; interval 1, 3, dan 12 jam; atau kerangka waktu khusus.

1. Pilih **Jalankan** untuk melihat hasilnya.

   Untuk tutorial ini, hasilnya mencakup 20 peristiwa log yang paling baru ditambahkan.

   CloudWatch Log menampilkan grafik batang peristiwa log dalam grup log dari waktu ke waktu. Grafik batang tidak hanya menunjukkan peristiwa dalam tabel, tetapi juga distribusi peristiwa dalam grup log yang cocok dengan kueri dan jangka waktu.

1. Untuk melihat semua bidang untuk peristiwa log yang dikembalikan, pilih ikon tarik-turun segitiga di sebelah kiri acara bernomor.

## Ubah kueri sampel
<a name="CWL_AnalyzeLogData_ModifySampleQuery"></a>

Dalam tutorial ini, Anda mengubah kueri sampel untuk menunjukkan 50 log acara terbaru.

Jika Anda belum menjalankan tutorial sebelumnya, lakukan sekarang. Tutorial ini dimulai di tempat tutorial sebelumnya berakhir.

**catatan**  
Beberapa contoh kueri yang disediakan dengan penggunaan CloudWatch Log Insights `head` atau `tail` perintah sebagai gantinya. `limit` Perintah ini akan tidak digunakan lagi dan telah diganti dengan `limit`. Gunakan `limit`, dan bukan `head` atau `tail` dalam semua kueri yang Anda tulis.

**Untuk memodifikasi CloudWatch kueri sampel Wawasan Log**

1. Di editor kueri, ubah **20** menjadi **50**, lalu pilih **Run** (Jalankan).

   Hasil kueri baru akan muncul. Dengan asumsi ada cukup data dalam grup log selama rentang waktu default, sekarang ada 50 log acara yang tercantum.

1. (Opsional) Anda dapat menyimpan kueri yang telah Anda buat. Untuk menyimpan kueri ini, pilih **Save** (Simpan). Untuk informasi selengkapnya, lihat [Simpan dan jalankan kembali kueri CloudWatch Logs Insights](CWL_Insights-Saving-Queries.md).

## Tambahkan perintah filter ke kueri sampel
<a name="CWL_AnalyzeLogData_FilterQuery"></a>

Tutorial ini menunjukkan cara membuat perubahan yang lebih kuat pada kueri di editor kueri. Dalam tutorial ini, Anda memfilter hasil kueri sebelumnya berdasarkan bidang dalam log acara yang diambil.

Jika Anda belum menjalankan tutorial sebelumnya, lakukan sekarang. Tutorial ini dimulai di tempat tutorial sebelumnya berakhir.

**Untuk menambahkan perintah filter ke kueri sebelumnya**

1. Tentukan bidang untuk memfilter. Untuk melihat bidang paling umum yang CloudWatch terdeteksi Log dalam peristiwa log yang terdapat dalam grup log yang dipilih dalam 15 menit terakhir, dan persentase peristiwa log di mana setiap bidang muncul, pilih **Bidang** di sisi kanan halaman.

   Untuk melihat bidang yang terdapat dalam log acara tertentu, pilih ikon di sebelah kiri baris tersebut.

   Bidang **awsRegion** mungkin muncul dalam log acara Anda, tergantung pada kejadian yang ada di log Anda. Untuk bagian selanjutnya dalam tutorial ini, kita menggunakan **awsRegion** sebagai bidang filter, tetapi Anda dapat menggunakan bidang yang berbeda jika bidang tersebut tidak tersedia.

1. Di kotak editor kueri, tempatkan kursor Anda setelah **50**, lalu tekan Enter.

1. Di baris baru, pertama masukkan \$1 (karakter pipa) dan spasi. Perintah dalam kueri Wawasan CloudWatch Log harus dipisahkan oleh karakter pipa.

1. Masukkan **filter awsRegion="us-east-1"**.

1. Pilih **Jalankan**.

   Kueri berjalan lagi, dan sekarang menampilkan 50 hasil terbaru yang cocok dengan filter baru.

   Jika Anda memfilter dengan bidang yang berbeda dan mendapat hasil kesalahan, Anda mungkin perlu melakukan escape pada nama bidang. Jika nama bidang mengandung karakter non-alfanumerik, Anda harus menempatkan karakter backtick (`) sebelum dan sesudah nama bidang (misalnya, **`error-code`="102"**).

   Anda harus menggunakan karakter backtick untuk nama bidang yang berisi karakter non-alfanumerik, tetapi tidak untuk nilai. Nilai selalu ada dalam tanda kutip (").

Log Insights QL mencakup kemampuan kueri yang kuat, termasuk beberapa perintah dan dukungan untuk ekspresi reguler, matematika, dan operasi statistik. Untuk informasi selengkapnya, lihat [CloudWatch Sintaks kueri bahasa Wawasan Log](CWL_QuerySyntax.md).

# Tutorial: Jalankan kueri dengan fungsi agregasi
<a name="CWL_AnalyzeLogData_AggregationQuery"></a>

Anda dapat menggunakan fungsi agregasi dengan `stats` perintah dan sebagai argumen untuk fungsi lainnya. Dalam tutorial ini, Anda menjalankan perintah query yang menghitung jumlah peristiwa log yang berisi bidang tertentu. Perintah query mengembalikan jumlah total yang dikelompokkan berdasarkan nilai bidang tertentu atau nilai. Untuk informasi selengkapnya tentang fungsi agregasi, lihat [Operasi dan fungsi yang didukung](https://docs.aws.amazon.com/en_us/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html#CWL_QuerySyntax-operations-functions) di *Panduan Pengguna CloudWatch Log Amazon*.

**Untuk menjalankan kueri dengan fungsi agregasi**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Log**, lalu pilih **Wawasan Log**.

1. Konfirmasikan bahwa tab **QL Wawasan Log** dipilih.

1. Dalam menu tarik-turun **Pilih grup log**, pilih satu atau beberapa grup log untuk kueri.

    Jika ini adalah akun pemantauan dalam pengamatan CloudWatch lintas akun, Anda dapat memilih grup log di akun sumber serta akun pemantauan. Satu kueri dapat menanyakan log dari akun yang berbeda sekaligus.

   Anda dapat memfilter grup log berdasarkan nama grup log, ID akun, atau label akun.

   Saat Anda memilih grup CloudWatch log, Wawasan Log secara otomatis mendeteksi bidang data dalam grup log jika itu adalah grup log kelas Standar. Untuk melihat bidang yang ditemukan, pilih menu **Fields** di dekat kanan atas halaman.

1. Hapus kueri default di editor kueri, dan masukkan perintah berikut:

   ```
   stats count(*) by fieldName
   ```

1. Ganti *fieldName* dengan bidang yang ditemukan dari menu **Fields**.

   Menu **Fields** terletak di kanan atas halaman dan menampilkan semua bidang yang ditemukan yang mendeteksi Wawasan CloudWatch Log di grup log Anda.

1. Pilih **Jalankan** untuk melihat hasil kueri.

   Hasil kueri menunjukkan jumlah catatan dalam grup log Anda yang cocok dengan perintah kueri dan jumlah total yang dikelompokkan berdasarkan nilai atau nilai bidang yang ditentukan.

# Tutorial: Jalankan kueri yang menghasilkan visualisasi yang dikelompokkan berdasarkan bidang log
<a name="CWL_AnalyzeLogData_VisualizationFieldQuery"></a>

Ketika menjalankan kueri yang menggunakan fungsi `stats` untuk mengelompokkan hasil yang dikembalikan oleh nilai dari satu atau beberapa bidang dalam entri log, Anda dapat melihat hasilnya sebagai diagram batang, diagram lingkaran, grafik garis, atau grafik area bertumpuk. Hal ini membantu memvisualisasikan tren dalam log Anda dengan lebih efisien.

**Untuk menjalankan kueri untuk visualisasi**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Log**, lalu pilih **Wawasan Log**.

1. Dalam menu tarik-turun **Pilih grup log**, pilih satu atau beberapa grup log untuk kueri.

    Jika ini adalah akun pemantauan dalam pengamatan CloudWatch lintas akun, Anda dapat memilih grup log di akun sumber serta akun pemantauan. Satu kueri dapat menanyakan log dari akun yang berbeda sekaligus.

   Anda dapat memfilter grup log berdasarkan nama grup log, ID akun, atau label akun.

1. Di editor kueri, hapus konten saat ini, masukkan fungsi `stats` berikut ini, lalu pilih **Run query** (Jalankan kueri).

   ```
   stats count(*) by @logStream 
       | limit 100
   ```

   Hasilnya menunjukkan jumlah log acara dalam grup log untuk setiap pengaliran log. Hasilnya terbatas hanya 100 baris.

1. Pilih tab **Visualization** (Visualisasi).

1. Pilih panah di sebelah **Line** (Garis), lalu pilih **Bar** (Batang).

   Akan muncul diagram batang yang menampilkan balok untuk setiap pengaliran log.

# Tutorial: Jalankan kueri yang menghasilkan visualisasi deret waktu
<a name="CWL_AnalyzeLogData_VisualizationQuery"></a>

Ketika menjalankan kueri yang menggunakan fungsi `bin()` untuk mengelompokkan hasil yang dikembalikan menurut jangka waktu, Anda dapat melihat hasilnya sebagai grafik garis, grafik area bertumpuk, diagram lingkaran, atau diagram batang. Hal ini membantu memvisualisasikan tren dalam log acara dengan lebih efisien dari waktu ke waktu.

**Untuk menjalankan kueri untuk visualisasi**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Log**, lalu pilih **Wawasan Log**.

1. Konfirmasikan bahwa tab **QL Wawasan Log** dipilih.

1. Dalam menu tarik-turun **Pilih grup log**, pilih satu atau beberapa grup log untuk kueri.

    Jika ini adalah akun pemantauan dalam pengamatan CloudWatch lintas akun, Anda dapat memilih grup log di akun sumber serta akun pemantauan. Satu kueri dapat menanyakan log dari akun yang berbeda sekaligus.

   Anda dapat memfilter grup log berdasarkan nama grup log, ID akun, atau label akun.

1. Di editor kueri, hapus konten saat ini, masukkan fungsi `stats` berikut ini, lalu pilih **Run query** (Jalankan kueri).

   ```
   stats count(*) by bin(30s)
   ```

   Hasilnya menunjukkan jumlah peristiwa log dalam grup log yang diterima oleh CloudWatch Log untuk setiap periode 30 detik.

1. Pilih tab **Visualization** (Visualisasi).

   Hasilnya ditampilkan sebagai grafik garis. Untuk beralih ke diagram batang, diagram lingkaran, atau diagram area bertumpuk, pilih panah di samping **Line** (Garis) di kiri atas grafik.

# Kueri Sampel
<a name="CWL_QuerySyntax-examples"></a>

Bagian ini berisi daftar perintah kueri umum dan berguna yang dapat Anda jalankan di [CloudWatchkonsol](https://console.aws.amazon.com/cloudwatch/). Untuk informasi tentang cara menjalankan perintah kueri, lihat [Tutorial: Menjalankan dan memodifikasi contoh kueri](https://docs.aws.amazon.com/en_us/AmazonCloudWatch/latest/logs/CWL_AnalyzeLogData_RunSampleQuery.html) di *Panduan Pengguna Amazon CloudWatch Logs*.

Untuk informasi selengkapnya tentang sintaks kueri, lihat[CloudWatch Sintaks kueri bahasa Wawasan Log](CWL_QuerySyntax.md).

**Topics**
+ [

## Kueri umum
](#CWL_QuerySyntax-examples-general)
+ [

## Kueri untuk log Lambda
](#CWL_QuerySyntax-examples-Lambda)
+ [

## Kueri untuk log aliran VPC Amazon
](#CWL_QuerySyntax-examples-VPC)
+ [

## Kueri untuk log Route 53
](#CWL_QuerySyntax-examples-Route53)
+ [

## Kueri untuk log CloudTrail
](#CWL_QuerySyntax-examples-CloudTrail)
+ [

## Pertanyaan untuk Amazon API Gateway
](#CWL_QuerySyntax-examples-APIGateway)
+ [

## Pertanyaan untuk gateway NAT
](#CWL_QuerySyntax-examples-NATGateway)
+ [

## Kueri untuk log server Apache
](#CWL_QuerySyntax-examples-Apache)
+ [

## Kueri untuk Amazon EventBridge
](#CWL_QuerySyntax-examples-EventBridge)
+ [

## Contoh perintah parse
](#CWL_QuerySyntax-examples-parse)

## Kueri umum
<a name="CWL_QuerySyntax-examples-general"></a>

**Temukan 25 peristiwa log yang paling baru ditambahkan.**

```
fields @timestamp, @message | sort @timestamp desc | limit 25
```

**Dapatkan daftar jumlah pengecualian per jam.** 

```
filter @message like /Exception/ 
    | stats count(*) as exceptionCount by bin(1h)
    | sort exceptionCount desc
```

**Dapatkan daftar peristiwa log yang bukan pengecualian.** 

```
fields @message | filter @message not like /Exception/
```

**Dapatkan peristiwa log terbaru untuk setiap nilai unik `server` bidang.** 

```
fields @timestamp, server, severity, message 
| sort @timestamp asc 
| dedup server
```

**Dapatkan peristiwa log terbaru untuk setiap nilai unik `server` bidang untuk setiap `severity` jenis.** 

```
fields @timestamp, server, severity, message 
| sort @timestamp desc 
| dedup server, severity
```

## Kueri untuk log Lambda
<a name="CWL_QuerySyntax-examples-Lambda"></a>

**Tentukan jumlah memori overprovisioned.**

```
filter @type = "REPORT"
    | stats max(@memorySize / 1000 / 1000) as provisonedMemoryMB,
        min(@maxMemoryUsed / 1000 / 1000) as smallestMemoryRequestMB,
        avg(@maxMemoryUsed / 1000 / 1000) as avgMemoryUsedMB,
        max(@maxMemoryUsed / 1000 / 1000) as maxMemoryUsedMB,
        provisonedMemoryMB - maxMemoryUsedMB as overProvisionedMB
```

**Buat laporan latensi.**

```
filter @type = "REPORT" |
    stats avg(@duration), max(@duration), min(@duration) by bin(5m)
```

**Cari pemanggilan fungsi lambat, dan hilangkan permintaan duplikat yang dapat muncul dari percobaan ulang atau kode sisi klien. Dalam query ini, `@duration` adalah dalam milidetik.**

```
fields @timestamp, @requestId, @message, @logStream 
| filter @type = "REPORT" and @duration > 1000
| sort @timestamp desc
| dedup @requestId 
| limit 20
```

## Kueri untuk log aliran VPC Amazon
<a name="CWL_QuerySyntax-examples-VPC"></a>

**Temukan 15 transfer paket teratas di seluruh host:**

```
stats sum(packets) as packetsTransferred by srcAddr, dstAddr
    | sort packetsTransferred  desc
    | limit 15
```

**Temukan transfer 15 byte teratas untuk host pada subnet tertentu.**

```
filter isIpv4InSubnet(srcAddr, "192.0.2.0/24")
    | stats sum(bytes) as bytesTransferred by dstAddr
    | sort bytesTransferred desc
    | limit 15
```

**Temukan alamat IP yang menggunakan UDP sebagai protokol transfer data.**

```
filter protocol=17 | stats count(*) by srcAddr
```

**Temukan alamat IP tempat catatan aliran dilewati selama jendela pengambilan.**

```
filter logStatus="SKIPDATA"
    | stats count(*) by bin(1h) as t
    | sort t
```

**Temukan satu catatan untuk setiap koneksi, untuk membantu memecahkan masalah konektivitas jaringan.**

```
fields @timestamp, srcAddr, dstAddr, srcPort, dstPort, protocol, bytes 
| filter logStream = 'vpc-flow-logs' and interfaceId = 'eni-0123456789abcdef0' 
| sort @timestamp desc 
| dedup srcAddr, dstAddr, srcPort, dstPort, protocol 
| limit 20
```

## Kueri untuk log Route 53
<a name="CWL_QuerySyntax-examples-Route53"></a>

**Temukan distribusi catatan per jam berdasarkan jenis kueri.**

```
stats count(*) by queryType, bin(1h)
```

**Temukan 10 DNS resolver dengan jumlah permintaan tertinggi.**

```
stats count(*) as numRequests by resolverIp
    | sort numRequests desc
    | limit 10
```

**Temukan jumlah catatan berdasarkan domain dan subdomain di mana server gagal menyelesaikan permintaan DNS.**

```
filter responseCode="SERVFAIL" | stats count(*) by queryName
```

## Kueri untuk log CloudTrail
<a name="CWL_QuerySyntax-examples-CloudTrail"></a>

**Temukan jumlah entri log untuk setiap layanan, jenis acara, dan AWS Wilayah.**

```
stats count(*) by eventSource, eventName, awsRegion
```

**Temukan host Amazon EC2 yang dimulai atau dihentikan di Wilayah tertentu AWS .**

```
filter (eventName="StartInstances" or eventName="StopInstances") and awsRegion="us-east-2"
```

**Temukan AWS Wilayah, nama pengguna, dan ARNs pengguna IAM yang baru dibuat.**

```
filter eventName="CreateUser"
    | fields awsRegion, requestParameters.userName, responseElements.user.arn
```

**Temukan jumlah catatan di mana pengecualian terjadi saat menjalankan API`UpdateTrail`.**

```
filter eventName="UpdateTrail" and ispresent(errorCode)
    | stats count(*) by errorCode, errorMessage
```

**Temukan entri log di mana TLS 1.0 atau 1.1 digunakan**

```
filter tlsDetails.tlsVersion in [ "TLSv1", "TLSv1.1" ]
| stats count(*) as numOutdatedTlsCalls by userIdentity.accountId, recipientAccountId, eventSource, eventName, awsRegion, tlsDetails.tlsVersion, tlsDetails.cipherSuite, userAgent
| sort eventSource, eventName, awsRegion, tlsDetails.tlsVersion
```

**Temukan jumlah panggilan per layanan yang menggunakan TLS versi 1.0 atau 1.1**

```
filter tlsDetails.tlsVersion in [ "TLSv1", "TLSv1.1" ]
| stats count(*) as numOutdatedTlsCalls by eventSource
| sort numOutdatedTlsCalls desc
```

## Pertanyaan untuk Amazon API Gateway
<a name="CWL_QuerySyntax-examples-APIGateway"></a>

Temukan 10 kesalahan 4XX terakhir

```
fields @timestamp, status, ip, path, httpMethod
| filter status>=400 and status<=499
| sort @timestamp desc
| limit 10
```

Identifikasi 10 Amazon API Gateway permintaan yang paling lama berjalan di grup log akses Anda Amazon API Gateway 

```
fields @timestamp, status, ip, path, httpMethod, responseLatency
| sort responseLatency desc
| limit 10
```

Kembalikan daftar jalur API paling populer di grup log Amazon API Gateway akses Anda

```
stats count(*) as requestCount by path
| sort requestCount desc
| limit 10
```

Membuat laporan latensi integrasi untuk grup log Amazon API Gateway akses Anda

```
filter status=200
| stats avg(integrationLatency), max(integrationLatency), 
min(integrationLatency) by bin(1m)
```

## Pertanyaan untuk gateway NAT
<a name="CWL_QuerySyntax-examples-NATGateway"></a>

Jika Anda melihat biaya yang lebih tinggi dari biasanya dalam AWS tagihan Anda, Anda dapat menggunakan Wawasan CloudWatch Log untuk menemukan kontributor teratas. Untuk informasi selengkapnya tentang perintah kueri berikut, [lihat Bagaimana cara menemukan kontributor teratas untuk lalu lintas melalui gateway NAT di VPC saya?](https://aws.amazon.com/premiumsupport/knowledge-center/vpc-find-traffic-sources-nat-gateway/) di halaman dukungan AWS premium.

**catatan**  
Dalam perintah kueri berikut, ganti “x.x.x.x” dengan IP pribadi gateway NAT Anda, dan ganti “y.y” dengan dua oktet pertama dari rentang CIDR VPC Anda.

**Temukan contoh yang mengirimkan lalu lintas terbanyak melalui gateway NAT Anda.**

```
filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') 
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10
```

**Tentukan lalu lintas yang menuju dan dari instance di gateway NAT Anda.**

```
filter (dstAddr like 'x.x.x.x' and srcAddr like 'y.y.') or (srcAddr like 'xxx.xx.xx.xx' and dstAddr like 'y.y.')
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10
```

**Tentukan tujuan internet yang paling sering berkomunikasi dengan instance di VPC Anda untuk upload dan download.**

*****Untuk upload*****

```
filter (srcAddr like 'x.x.x.x' and dstAddr not like 'y.y.') 
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10
```

*****Untuk unduhan*****

```
filter (dstAddr like 'x.x.x.x' and srcAddr not like 'y.y.') 
| stats sum(bytes) as bytesTransferred by srcAddr, dstAddr
| sort bytesTransferred desc
| limit 10
```

## Kueri untuk log server Apache
<a name="CWL_QuerySyntax-examples-Apache"></a>

Anda dapat menggunakan Wawasan CloudWatch Log untuk menanyakan log server Apache. Untuk informasi selengkapnya tentang kueri berikut, lihat [Menyederhanakan log server Apache dengan Wawasan CloudWatch Log](https://aws.amazon.com/blogs/mt/simplifying-apache-server-logs-with-amazon-cloudwatch-logs-insights/) di Blog Operasi & Migrasi AWS Cloud.

**Temukan bidang yang paling relevan, sehingga Anda dapat meninjau log akses Anda dan memeriksa lalu lintas di jalur */admin* aplikasi Anda.**

```
fields @timestamp, remoteIP, request, status, filename| sort @timestamp desc
| filter filename="/var/www/html/admin"
| limit 20
```

**Temukan nomor permintaan GET unik yang mengakses halaman utama Anda dengan kode status “200" (sukses).**

```
fields @timestamp, remoteIP, method, status
| filter status="200" and referrer= http://34.250.27.141/ and method= "GET"
| stats count_distinct(remoteIP) as UniqueVisits
| limit 10
```

**Temukan berapa kali layanan Apache Anda dimulai ulang.**

```
fields @timestamp, function, process, message
| filter message like "resuming normal operations"
| sort @timestamp desc
| limit 20
```

## Kueri untuk Amazon EventBridge
<a name="CWL_QuerySyntax-examples-EventBridge"></a>

Dapatkan jumlah EventBridge acara yang dikelompokkan berdasarkan jenis detail acara

```
fields @timestamp, @message
| stats count(*) as numberOfEvents by `detail-type`
| sort numberOfEvents desc
```

## Contoh perintah parse
<a name="CWL_QuerySyntax-examples-parse"></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
```

# Bandingkan (diff) dengan rentang waktu sebelumnya
<a name="CWL_AnalyzeLogData_Compare"></a>

Anda dapat menggunakan Wawasan CloudWatch Log dengan QL Wawasan Log untuk membandingkan perubahan dalam peristiwa log Anda dari waktu ke waktu. Anda dapat membandingkan peristiwa log yang dicerna selama rentang waktu terakhir dengan log dari periode waktu sebelumnya. Atau, Anda dapat membandingkan dengan periode waktu sebelumnya yang serupa. Ini dapat membantu Anda menemukan apakah kesalahan dalam log Anda baru-baru ini diperkenalkan atau sudah terjadi, dan dapat membantu Anda menemukan tren lainnya. 

Kueri perbandingan hanya mengembalikan pola dalam hasil, bukan peristiwa log mentah. Pola yang dikembalikan akan membantu Anda dengan cepat melihat tren dan perubahan dalam peristiwa log dari waktu ke waktu. Setelah Anda menjalankan kueri perbandingan dan mendapatkan hasil pola, Anda dapat melihat contoh peristiwa log mentah untuk pola yang Anda minati. Untuk informasi selengkapnya tentang pola log, lihat[Analisis pola](CWL_AnalyzeLogData_Patterns.md).

Saat Anda menjalankan kueri perbandingan, kueri Anda dianalisis terhadap dua periode waktu yang berbeda: periode kueri asli yang Anda pilih, dan periode perbandingan. Periode perbandingan selalu sama panjangnya dengan periode kueri asli Anda. Interval waktu default untuk perbandingan adalah sebagai berikut.
+ **Periode sebelumnya** — Membandingkan dengan periode waktu sebelum periode waktu kueri Anda.
+ **Hari sebelumnya** — Membandingkan dengan periode waktu satu hari sebelum periode waktu kueri Anda.
+ **Minggu sebelumnya** — Bandingkan dengan periode waktu satu minggu sebelum periode waktu kueri Anda.
+ **Bulan sebelumnya** — Membandingkan dengan periode waktu satu bulan sebelum periode waktu kueri Anda.

**catatan**  
Kueri yang menggunakan perbandingan dikenakan biaya yang mirip dengan menjalankan satu kueri Wawasan CloudWatch Log selama rentang waktu gabungan. Untuk informasi lebih lanjut, lihat [Amazon CloudWatch Harga](https://aws.amazon.com/cloudwatch/pricing/).

**Untuk menjalankan kueri perbandingan**

1. Buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Di panel navigasi, pilih **Log**, **Wawasan Log**.

   Kueri default muncul di kotak kueri.

1. Konfirmasikan bahwa tab **QL Wawasan Log** dipilih.

1. Simpan kueri default atau masukkan kueri yang berbeda. 

1. Di menu drop-down **Pilih grup log**, pilih satu atau beberapa grup log untuk kueri.

1. (Opsional) Gunakan pemilih interval waktu untuk memilih periode waktu yang ingin Anda kueri. Kueri default adalah untuk jam data log sebelumnya.

1. Dengan pemilih rentang waktu, pilih **Bandingkan**. Kemudian pilih periode waktu sebelumnya yang ingin Anda bandingkan dengan log asli, dan pilih **Terapkan**.

1. Pilih **Run query** (Jalankan kueri).

   Untuk menyebabkan kueri mengambil data dari periode perbandingan, `diff` perintah ditambahkan ke kueri Anda.

1. Pilih tab **Patterns** untuk melihat hasilnya.

   Tabel menampilkan informasi berikut:
   + Setiap **Pola**, dengan bagian variabel dari pola digantikan oleh simbol token dinamis`<string-number>`. *string*Ini adalah deskripsi dari jenis data yang diwakili oleh token. *number*Menunjukkan di mana dalam pola token ini muncul, dibandingkan dengan token dinamis lainnya. Untuk informasi selengkapnya, lihat [Analisis pola](CWL_AnalyzeLogData_Patterns.md).
   + **Jumlah peristiwa** adalah jumlah peristiwa log dengan pola itu dalam periode waktu asli yang lebih terkini.
   + **Perbedaan jumlah peristiwa** adalah perbedaan antara jumlah peristiwa log yang cocok dalam periode waktu saat ini versus periode waktu perbandingan. Berbeda positif berarti ada lebih banyak peristiwa seperti itu dalam periode waktu saat ini.
   + **Deskripsi perbedaan** secara singkat merangkum perubahan pola itu antara periode waktu saat ini dan periode perbandingan.
   + **Jenis keparahan** adalah kemungkinan tingkat keparahan peristiwa log dengan pola ini, berdasarkan kata-kata yang ditemukan dalam peristiwa log seperti`FATAL`,`ERROR`, dan. `WARN`

1. Untuk memeriksa lebih lanjut salah satu pola dalam daftar, pilih ikon di kolom **Inspect** untuk salah satu pola. 

   Panel **pemeriksaan Pola** muncul dan menampilkan yang berikut: 
   + **Pola**. Pilih token dalam pola untuk menganalisis nilai token tersebut.
   + Histogram yang menunjukkan jumlah kemunculan pola selama rentang waktu yang ditanyakan. Ini dapat membantu Anda mengidentifikasi tren menarik seperti peningkatan tiba-tiba dalam terjadinya suatu pola.
   + Tab **Log samples** menampilkan beberapa peristiwa log yang cocok dengan pola yang dipilih.
   + Tab **Nilai Token** menampilkan nilai token dinamis yang dipilih, jika Anda telah memilihnya.
**catatan**  
Maksimal 10 nilai token ditangkap untuk setiap token. Jumlah token mungkin tidak tepat. CloudWatch Log menggunakan penghitung probabilistik untuk menghasilkan jumlah token, bukan nilai absolut.
   + Tab **pola Terkait** menampilkan pola lain yang sering terjadi mendekati waktu yang sama dengan pola yang Anda periksa. Misalnya, jika pola untuk `ERROR` pesan biasanya disertai dengan peristiwa log lain yang ditandai `INFO` dengan detail tambahan, pola itu ditampilkan di sini.

# Visualisasikan data log dalam grafik
<a name="CWL_Insights-Visualizing-Log-Data"></a>

Anda dapat menggunakan visualisasi seperti diagram batang, diagram garis, dan bagan area bertumpuk untuk mengidentifikasi pola dalam data log Anda dengan lebih efisien. CloudWatch Log Insights menghasilkan visualisasi untuk kueri yang menggunakan `stats` fungsi dan satu atau beberapa fungsi agregasi. Untuk informasi lebih lanjut, lihat [statistik.](CWL_QuerySyntax-Stats.md)