Bagikan melalui


gabungan innerunique

Berlaku untuk: ✅Microsoft Fabric

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 mengabaikan catatan jejak duplikat yang berkontribusi pada korelasi.

Diagram yang memperlihatkan cara kerja gabungan.

Sintaks

LeftTable|joinkind=innerunique [ Petunjuk ] Kondisi RightTableon

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib 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 bentuk Nilai Nama=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 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".

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, , leftlocal,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 acak
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 deduplikasi dari tabel kiri yang cocok dengan baris dari tabel kanan.

Contoh

Tinjau contoh dan jalankan di halaman kueri Data Explorer Anda.

Menggunakan gabungan innerunique default

Contoh kueri menggabungkan baris dari tabel X dan Y tempat kunci cocok, hanya memperlihatkan baris yang ada di kedua tabel

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

Hasil

Tombol Nilai1 Key1 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:

Tombol 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

Hasil

kunci value 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

Hasil

kunci value 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"

Hasil

kunci value 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
  • Pelajari tentang rasa gabungan lainnya