Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
join
Menggabungkan peristiwa log dari grup log sumber dengan peristiwa dari grup log lain atau hasil kueri berdasarkan bidang yang cocok.
Gunakan join perintah untuk mengkorelasikan peristiwa log terkait di berbagai sumber seperti grup log menggunakan kunci yang umum di seluruh mereka seperti pencocokan pengidentifikasi permintaan atau transaksi. IDs
Sintaks
join type=<join_type> left=<left_alias> right=<right_alias> where <left_alias>.<field>=<right_alias>.<field> (SOURCE <right_log_group>)
Parameter
-
<right_log_group>— Sumber data sekunder untuk bergabung dengan. -
<left_alias>dan<right_alias>— Alias untuk membedakan bidang dari sumber data kiri (primer) dan kanan (sekunder). -
where <field>- Menentukan bidang yang digunakan sebagai kunci bergabung. Bidang harus ada di kedua sumber data. -
type=<join_type>(opsional) - Menentukan jenis bergabung. Nilai yang valid adalah:-
inner(default) - Mengembalikan hanya catatan yang cocok -
left— Mengembalikan semua catatan dari sumber data primer dan catatan yang cocok dari sumber data sekunder
-
Contoh
contoh Contoh 1: Korelasikan permintaan API Gateway dengan log eksekusi Lambda
Contoh ini menunjukkan cara menggabungkan log akses API Gateway dengan log fungsi Lambda untuk menghubungkan permintaan yang masuk dengan pemrosesan backend mereka. Ini berguna untuk memecahkan masalah alur end-to-end permintaan dan mengidentifikasi pemanggilan Lambda mana yang sesuai dengan permintaan API tertentu.
filter status >= 500 | join type=inner left=api right=lambda where api.requestId=lambda.requestId (SOURCE '/aws/lambda/my-function') | fields api.requestId, api.status, api.latency, lambda.duration, lambda.memoryUsed | sort api.latency desc
Kueri ini:
-
Kueri API Gateway akses log dan filter untuk kesalahan server (status> = 500)
-
Bergabung dengan log fungsi Lambda menggunakan bidang
requestIdyang muncul di kedua sumber log -
Menggunakan alias (
apidanlambda) untuk membedakan bidang dari setiap sumber -
Mengembalikan informasi gabungan yang menunjukkan latensi API bersama durasi eksekusi Lambda dan penggunaan memori
-
Mengurutkan hasil berdasarkan latensi API untuk mengidentifikasi permintaan paling lambat
contoh Contoh 2: Lacak transaksi terdistribusi di seluruh layanan mikro
Saat men-debug masalah dalam arsitektur layanan mikro, Anda sering perlu melacak transaksi di beberapa layanan. Contoh ini menunjukkan cara menggabungkan log dari dua layanan berbeda menggunakan ID transaksi umum.
filter eventType = "ORDER_CREATED" | join type=left left=order right=payment where order.transactionId=payment.transactionId (SOURCE '/aws/lambda/payment-service') | filter payment.eventType = "PAYMENT_PROCESSED" or !ispresent(payment.eventType) | fields order.transactionId, order.orderId, order.customerId, payment.paymentStatus, payment.amount | filter payment.paymentStatus != "SUCCESS" or !ispresent(payment.paymentStatus)
Kueri ini:
-
Dimulai dengan acara pembuatan pesanan dari layanan pesanan
-
Menggunakan a
left joinuntuk memasukkan semua pesanan, bahkan yang tidak memiliki catatan pembayaran yang cocok -
Bergabung dengan acara pemrosesan pembayaran menggunakan bidang bersama
transactionId -
Memfilter hasil akhir untuk hanya menampilkan pesanan dengan pembayaran gagal atau catatan pembayaran yang hilang
Gabungan kiri penting di sini karena memastikan Anda melihat pesanan yang dibuat tetapi tidak pernah memiliki acara pembayaran yang sesuai, yang dapat menunjukkan kegagalan sistem.
Perilaku
-
Sumber data primer (sisi kiri) diproses terlebih dahulu.
-
Sumber data sekunder dievaluasi dan dicocokkan menggunakan kunci gabungan yang ditentukan.
-
Pencocokan dilakukan dengan menggunakan perbandingan kesetaraan di bidang gabungan.
-
Untuk gabungan kiri, catatan tak tertandingi dari sumber data primer dipertahankan dengan nilai nol untuk bidang sekunder.
Catatan dan batasan
-
Hanya kondisi kesetaraan (=) yang didukung.
-
Hanya satu perintah join yang didukung per kueri.
-
Kunci gabungan harus ada di kedua sumber data dan tipe yang kompatibel.
-
Kueri yang menggunakan join dapat memindai lebih banyak data dan menimbulkan biaya lebih tinggi.
-
Jumlah nilai kunci unik dalam sumber data sekunder dibatasi hingga 50.000 untuk memastikan kinerja kueri.
-
Subquery di sisi kanan join tidak didukung.