Join lintas kluster

Gabungan lintas kluster melibatkan gabungan data dari himpunan data yang berada di kluster yang berbeda.

Dalam gabungan lintas kluster, kueri dapat dijalankan di tiga lokasi yang mungkin, masing-masing dengan sebutan khusus untuk referensi di seluruh dokumen ini:

  • Kluster lokal: Kluster tempat permintaan dikirim, yang juga dikenal sebagai kluster yang menghosting database dalam konteks.
  • Kluster kiri: Kluster yang menghosting data di sisi kiri operasi gabungan.
  • Kluster kanan: Kluster yang menghosting data di sisi kanan operasi gabungan.

Kluster yang menjalankan kueri mengambil data dari kluster lain.

Catatan

Jika data di sisi kiri dan kanan operasi gabungan dihosting di kluster yang sama, data tersebut tidak dianggap sebagai gabungan lintas kluster, bahkan jika data dihosting di luar kluster lokal.

Sintaks

[ cluster(ClusterName).database(DatabaseName).]LeftTable| ...
|join [ hint.remote=Strategi ] (
  [ cluster(ClusterName).database(DatabaseName).]RightTable| ...
) pada Kondisi

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Jenis Diperlukan Deskripsi
LeftTable string ✔️ Tabel kiri atau ekspresi tabular yang barisnya akan digabungkan. Dilambangkan sebagai $left.
Strategi string Menentukan kluster tempat untuk menjalankan gabungan. Nilai yang didukung adalah left, right, local, dan auto. Untuk informasi selengkapnya, lihat Strategi.
ClusterName string Jika data untuk gabungan berada di luar kluster lokal, gunakan fungsi cluster() untuk menentukan kluster.
DatabaseName string Jika data untuk gabungan berada di luar konteks database lokal, gunakan fungsi database() untuk menentukan database.
RightTable string ✔️ Tabel kanan atau ekspresi tabular yang barisnya akan digabungkan. Dilambangkan sebagai $right.
Kondisi string ✔️ Menentukan bagaimana baris dari LeftTable dicocokkan dengan baris dari RightTable. Jika kolom yang ingin Anda cocokkan memiliki nama yang sama di kedua tabel, gunakan sintaks ONColumnName. Jika tidak, gunakan sintaks ON $left.LeftColumn==$right.RightColumn. Untuk menentukan beberapa kondisi, Anda dapat menggunakan kata kunci "dan" atau memisahkannya dengan koma. Jika Anda menggunakan koma, kondisi dievaluasi menggunakan operator logis "dan".

Strategi

Daftar berikut menjelaskan nilai yang didukung untuk parameter Strategi :

  • left: Jalankan gabungan pada kluster tabel kiri, atau kluster kiri.
  • right: Jalankan gabungan pada kluster tabel yang tepat, atau kluster yang tepat.
  • local: Jalankan gabungan pada kluster kluster saat ini, atau kluster lokal.
  • auto: (Default) Kusto membuat keputusan jarak jauh.

Catatan

Petunjuk jarak jauh gabungan diabaikan jika strategi yang diisyaratkan tidak berlaku untuk operasi gabungan.

Cara kerja strategi otomatis

Secara default, auto strategi menentukan di mana gabungan lintas kluster harus dijalankan berdasarkan aturan berikut:

  • Jika salah satu tabel dihosting di kluster lokal, maka gabungan dilakukan pada kluster lokal.
  • Jika kedua tabel dihosting di luar kluster lokal, maka gabungan dilakukan pada kluster yang tepat.

Pertimbangkan contoh berikut:

// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1

// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1

auto Dengan strategi , "Contoh 1" akan dijalankan pada kluster lokal. Dalam "Contoh 2", dengan asumsi tidak ada kluster yang merupakan kluster lokal, gabungan akan dijalankan pada kluster yang tepat.

Pertimbangan performa

Untuk performa optimal, sebaiknya jalankan kueri pada kluster yang berisi tabel terbesar.

Mari kita pertimbangkan contoh berikut lagi:

// Example 1
T | ... | join (cluster("B").database("DB").T2 | ...) on Col1

// Example 2
cluster("B").database("DB").T | ... | join (cluster("C").database("DB2").T2 | ...) on Col1

"Contoh 1" diatur untuk berjalan pada kluster lokal, tetapi jika himpunan data yang dihasilkan T | ... lebih kecil dari satu yang dihasilkan oleh cluster("B").database("DB").T2 | ... maka akan lebih efisien untuk menjalankan operasi gabungan pada kluster B, dalam hal ini kluster yang tepat, alih-alih pada kluster lokal.

Kueri berikut melakukan ini dengan menggunakan right strategi . Dengan strategi , right operasi gabungan dilakukan pada kluster kanan, bahkan jika tabel kiri berada di kluster lokal.

T | ... | join hint.remote=right (cluster("B").database("DB").T2 | ...) on Col1

Kemampuan ini tidak didukung di Azure Monitor