Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
subkueri
Subkueri adalah kueri Logs Insights bersarang yang dapat digunakan sebagai masukan ke kueri lain. Subquery dapat digunakan untuk memperoleh set hasil perantara yang kemudian dikonsumsi oleh perintah berikutnya.
Sintaksis
Subkueri dalam filter
filter <field> in ( <subquery> )
Parameter
-
<subquery>— Kueri Logs Insights yang valid yang mengembalikan kumpulan hasil. Subquery harus menghasilkan bidang yang direferensikan oleh query luar.
Contoh
contoh Contoh 1: Menemukan 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 bertingkat 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
Permintaan ini:
-
Subquery menemukan semua
requestIdnilai dari layanan database yang mengalami batas waktu koneksi -
Kueri luar memfilter log layanan utama Anda untuk hanya menampilkan permintaan yang cocok dengan ID permintaan rawan kesalahan tersebut
-
Hasil menunjukkan konteks penuh permintaan yang gagal di hilir, termasuk titik akhir dan pengguna mana yang terpengaruh
Pola ini membantu Anda memahami dampak hulu dari kegagalan hilir.
contoh Contoh 2: Mengidentifikasi 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
Permintaan ini:
-
Subkueri menggabungkan upaya pembayaran yang gagal dan mengidentifikasi ID permintaan yang gagal lebih dari 3 kali
-
Kueri luar mengambil semua peristiwa log untuk ID permintaan bermasalah tersebut
-
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 terwujud sebelum dikonsumsi oleh kueri luar.
-
Hanya bidang yang dipilih secara eksplisit dalam subkueri yang tersedia untuk kueri luar.
Catatan dan batasan
-
Subquery harus mengembalikan bidang yang direferensikan oleh query luar.
-
Subquery bersarang tidak didukung.
-
Subquery dapat meningkatkan waktu dan biaya eksekusi kueri.
-
Subquery yang berkorelasi tidak didukung.
-
Eksekusi kueri dalam dibatasi hingga 30 detik.