

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

# subkueri
<a name="CWL_QuerySyntax-Subqueries"></a>

Subquery adalah kueri Wawasan Log bersarang yang dapat digunakan sebagai masukan ke kueri lain. Subquery dapat digunakan untuk mendapatkan set hasil antara yang kemudian dikonsumsi oleh perintah berikutnya.

**Sintaksis**  


**Subquery dalam filter**  


```
filter <field> in (
    <subquery>
)
```

**Parameter**  

+ `<subquery>`— Kueri Wawasan Log valid yang mengembalikan kumpulan hasil. Subquery harus menghasilkan bidang yang direferensikan oleh kueri luar.

**Contoh**  


**Example Contoh 1: Temukan permintaan yang mengalami kesalahan dalam layanan hilir**  
Contoh ini menunjukkan cara menggunakan subquery untuk mengidentifikasi permintaan di layanan utama Anda yang mengakibatkan kesalahan dalam layanan hilir. Ini berguna untuk memecahkan masalah kegagalan cascading dalam sistem terdistribusi.  

```
filter requestId in (
    SOURCE '/aws/lambda/database-service'
    | filter errorType = "DatabaseConnectionTimeout"
    | fields requestId
)
| fields @timestamp, requestId, endpoint, userId, responseTime
| sort @timestamp desc
```
Kueri ini:  

1. Subquery menemukan semua `requestId` nilai dari layanan database yang mengalami batas waktu koneksi

1. Kueri luar memfilter log layanan utama Anda untuk hanya menampilkan permintaan yang cocok dengan ID permintaan yang rawan kesalahan tersebut

1. Hasil menunjukkan konteks lengkap permintaan yang gagal di hilir, termasuk titik akhir dan pengguna mana yang terpengaruh
Pola ini membantu Anda memahami dampak hulu dari kegagalan hilir.

**Example Contoh 2: Identifikasi permintaan yang sering gagal untuk penyelidikan yang ditargetkan**  
Contoh ini menunjukkan penggunaan subquery dengan agregasi untuk menemukan permintaan yang gagal berulang kali, yang sering menunjukkan masalah sistematis daripada kesalahan sementara.  

```
filter requestId in (
    SOURCE '/aws/lambda/payment-processor'
    | filter status = "FAILED"
    | stats count(*) as failureCount by requestId
    | filter failureCount > 3
    | fields requestId
)
| fields @timestamp, requestId, customerId, amount, failureReason
| sort @timestamp asc
```
Kueri ini:  

1. Subquery menggabungkan upaya pembayaran yang gagal dan mengidentifikasi ID permintaan yang gagal lebih dari 3 kali

1. Kueri luar mengambil semua peristiwa log untuk ID permintaan bermasalah tersebut

1. Hasil diurutkan secara kronologis untuk menunjukkan perkembangan upaya coba lagi
Ini membantu membedakan antara kegagalan sementara (kejadian tunggal) dan masalah persisten (beberapa kegagalan) yang memerlukan penyelidikan lebih dalam.

**Perilaku**  

+ Subquery dijalankan secara independen dari query luar.
+ Hasil diwujudkan sebelum dikonsumsi oleh kueri luar.
+ Hanya bidang yang dipilih secara eksplisit dalam subquery yang tersedia untuk kueri luar.

**Catatan dan batasan**  

+ Subkueri harus mengembalikan bidang yang direferensikan oleh kueri luar.
+ Subkueri bersarang tidak didukung.
+ Subquery dapat meningkatkan waktu eksekusi query dan biaya.
+ Subquery yang berkorelasi tidak didukung.
+ Eksekusi kueri batin dibatasi hingga 30 detik.

**Perintah-perintah terkait**  

+ [bidang](CWL_QuerySyntax-Fields.md)
+ [menyaring](CWL_QuerySyntax-Filter.md)
+ [mengurai](CWL_QuerySyntax-Parse.md)
+ [statistik](CWL_QuerySyntax-Stats.md)
+ [mengurutkan](CWL_QuerySyntax-Sort.md)
+ [batasi](CWL_QuerySyntax-Limit.md)