gabungan innerunique
Rasa innerunique
gabungan menghapus kunci duplikat dari sisi kiri. Perilaku ini memastikan bahwa output berisi baris untuk setiap kombinasi tombol kiri dan kanan yang unik.
Secara default, innerunique
ragam gabungan digunakan jika kind
parameter tidak ditentukan. Implementasi default ini berguna dalam skenario analisis log/pelacakan, di mana Anda bertujuan untuk menghubungkan dua peristiwa berdasarkan ID korelasi bersama. Ini memungkinkan Anda untuk mengambil semua instans fenomena sambil mengacuhkan rekaman jejak duplikat yang berkontribusi pada korelasi.
Sintaks
LeftTable|
join
kind=innerunique
Aku tidak bisa melakukan ini. RightTableon
Kondisi
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Jenis | Diperlukan | Deskripsi |
---|---|---|---|
LeftTable | string |
✔️ | Tabel kiri atau ekspresi tabular, terkadang disebut tabel luar, yang barisnya akan digabungkan. Dilambangkan sebagai $left . |
Petunjuk | string |
Nol atau lebih petunjuk gabungan yang dipisahkan spasi dalam bentukNilaiNama= yang mengontrol perilaku operasi pencocokan baris dan rencana eksekusi. Untuk informasi selengkapnya, lihat Petunjuk. |
|
RightTable | string |
✔️ | Tabel kanan atau ekspresi tabular, terkadang disebut tabel dalam, 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 ON ColumnName. 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". |
Tip
Untuk performa terbaik, jika satu tabel selalu lebih kecil dari tabel lainnya, gunakan sebagai sisi kiri gabungan.
Petunjuk
Nama parameter | Nilai | Deskripsi |
---|---|---|
hint.remote |
auto , left , local , right |
Lihat Gabungan Lintas Kluster |
hint.strategy=broadcast |
Menentukan cara berbagi beban kueri pada node kluster. | Lihat gabungan siaran |
hint.shufflekey=<key> |
Kueri shufflekey membagikan muatan kueri pada node kluster, menggunakan kunci ke data partisi. |
Lihat kueri shuffle |
hint.strategy=shuffle |
Kueri shuffle strategi berbagi beban kueri pada node kluster, di mana setiap simpul memproses satu partisi data. |
Lihat kueri acak |
Mengembalikan
Skema: Semua kolom dari kedua tabel, termasuk kunci yang cocok.
Baris: Semua baris yang dideduplikasi dari tabel kiri yang cocok dengan baris dari tabel kanan.
Contoh
Menggunakan gabungan innerunique default
let X = datatable(Key:string, Value1:long)
[
'a',1,
'b',2,
'b',3,
'c',4
];
let Y = datatable(Key:string, Value2:long)
[
'b',10,
'c',20,
'c',30,
'd',40
];
X | join Y on Key
Output
Kunci | Nilai1 | Kunci1 | Nilai2 |
---|---|---|---|
b | 2 | b | 10 |
c | 4 | c | 20 |
c | 4 | c | 30 |
Catatan
Kunci 'a' dan 'd' tidak muncul dalam output, karena tidak ada kunci yang cocok di sisi kiri dan kanan.
Kueri menjalankan gabungan default, yang merupakan gabungan dalam setelah mendeduplikasi sisi kiri berdasarkan kunci gabungan. Deduplikasi hanya menyimpan rekaman pertama. Sisi kiri gabungan yang dihasilkan setelah deduplikasi adalah:
Kunci | Nilai1 |
---|---|
a | 1 |
b | 2 |
c | 4 |
Dua kemungkinan output dari gabungan innerunique
Catatan
Rasa innerunique
gabungan dapat menghasilkan dua kemungkinan output dan keduanya benar.
Pada output pertama, operator gabungan secara acak memilih kunci pertama yang muncul di t1, dengan nilai "val1.1" dan mencocokkannya dengan tombol t2.
Pada output kedua, operator gabungan secara acak memilih kunci kedua yang muncul di t1, dengan nilai "val1.2" dan mencocokkannya dengan tombol t2.
let t1 = datatable(key: long, value: string)
[
1, "val1.1",
1, "val1.2"
];
let t2 = datatable(key: long, value: string)
[
1, "val1.3",
1, "val1.4"
];
t1
| join kind = innerunique
t2
on key
Output
kunci | nilai | key1 | value1 |
---|---|---|---|
1 | val1.1 | 1 | val1.3 |
1 | val1.1 | 1 | val1.4 |
let t1 = datatable(key: long, value: string)
[
1, "val1.1",
1, "val1.2"
];
let t2 = datatable(key: long, value: string)
[
1, "val1.3",
1, "val1.4"
];
t1
| join kind = innerunique
t2
on key
Output
kunci | nilai | key1 | value1 |
---|---|---|---|
1 | val1.2 | 1 | val1.3 |
1 | val1.2 | 1 | val1.4 |
- Kusto dioptimalkan untuk mendorong filter yang datang setelah
join
, menuju sisi gabungan yang sesuai, kiri atau kanan, bila memungkinkan. - Terkadang, rasa yang digunakan adalah innerunique dan filter diperbanyak ke sisi kiri gabung. Rasa secara otomatis disebarluaskan dan kunci yang berlaku untuk filter tersebut muncul dalam output.
- Gunakan contoh sebelumnya dan tambahkan filter
where value == "val1.2"
. Ini memberikan hasil kedua dan tidak akan pernah memberikan hasil pertama untuk himpunan data:
let t1 = datatable(key: long, value: string)
[
1, "val1.1",
1, "val1.2"
];
let t2 = datatable(key: long, value: string)
[
1, "val1.3",
1, "val1.4"
];
t1
| join kind = innerunique
t2
on key
| where value == "val1.2"
Output
kunci | nilai | key1 | value1 |
---|---|---|---|
1 | val1.2 | 1 | val1.3 |
1 | val1.2 | 1 | val1.4 |
Mendapatkan aktivitas masuk yang diperluas
Dapatkan aktivitas diperpanjang dari login
bahwa berapa entri ditandai sebagai awal dan akhir aktivitas.
let Events = MyLogTable | where type=="Event" ;
Events
| where Name == "Start"
| project Name, City, ActivityId, StartTime=timestamp
| join (Events
| where Name == "Stop"
| project StopTime=timestamp, ActivityId)
on ActivityId
| project City, ActivityId, StartTime, StopTime, Duration = StopTime - StartTime
let Events = MyLogTable | where type=="Event" ;
Events
| where Name == "Start"
| project Name, City, ActivityIdLeft = ActivityId, StartTime=timestamp
| join (Events
| where Name == "Stop"
| project StopTime=timestamp, ActivityIdRight = ActivityId)
on $left.ActivityIdLeft == $right.ActivityIdRight
| project City, ActivityId, StartTime, StopTime, Duration = StopTime - StartTime
Konten terkait
- Pelajari tentang rasa gabungan lainnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk