

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 permintaan rawan kesalahan tersebut IDs

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 investigasi 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 gagal dan mengidentifikasi permintaan IDs yang gagal lebih dari 3 kali

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

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.
+ Subquery bersarang tidak didukung.
+ Subquery dapat meningkatkan waktu eksekusi query dan biaya.
+ Subquery 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)