Aracılığıyla paylaş


innerunique join

Birleştirme aroması innerunique , sol taraftan yinelenen anahtarları kaldırır. Bu davranış, çıkışın benzersiz sol ve sağ tuşların her birleşimi için bir satır içermesini sağlar.

Varsayılan olarak, innerunique parametre belirtilmezse birleştirme aroması kind kullanılır. Bu varsayılan uygulama, paylaşılan bağıntı kimliğine göre iki olayı ilişkilendirmeyi hedeflediğiniz günlük/izleme analizi senaryolarında kullanışlıdır. Bağıntıya katkıda bulunan yinelenen izleme kayıtlarını göz ardı ederken fenomenin tüm örneklerini almanıza olanak tanır.

Birleştirmenin nasıl çalıştığını gösteren diyagram.

Sözdizimi

LeftTable | join kind=innerunique [ İpuçları ] RightTable Koşulları on

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Parametreler

Ad Tür Zorunlu Açıklama
LeftTable string ✔️ Satırları birleştirilecek olan dış tablo olarak da adlandırılan sol tablo veya tablosal ifade. olarak $leftbelirtilir.
Ipuç -ları string Satır eşleştirme işleminin ve yürütme planının davranışını denetleen Ad = Değeri biçiminde sıfır veya daha fazla boşlukla ayrılmış birleştirme ipucu. Daha fazla bilgi için bkz . İpuçları.
RightTable string ✔️ Satırlarının birleştirileceği iç tablo olarak da adlandırılan sağ tablo veya tablosal ifade. olarak $rightbelirtilir.
Koşullar string ✔️ LeftTable'dan gelen satırların RightTable'dan gelen satırlarla nasıl eşleşeceğini belirler. Eşleştirmek istediğiniz sütunların adı her iki tabloda da aynıysa ColumnName söz dizimini ON kullanın. Aksi takdirde, LeftColumn RightColumn== $right.söz dizimini ON $left.kullanın. Birden çok koşul belirtmek için "ve" anahtar sözcüğünü kullanabilir veya bunları virgülle ayırabilirsiniz. Virgül kullanırsanız, koşullar "ve" mantıksal işleci kullanılarak değerlendirilir.

İpucu

En iyi performans için, bir tablo her zaman diğerinden küçükse birleştirmenin sol tarafı olarak kullanın.

İpuçları

Parametre adı Değerler Açıklama
hint.remote auto, left, local, right Bkz. Kümeler Arası Katılma
hint.strategy=broadcast Küme düğümlerinde sorgu yükünü paylaşmanın yolunu belirtir. Bkz. yayına katılma
hint.shufflekey=<key> Sorgu, shufflekey verileri bölümleme anahtarı kullanarak küme düğümlerinde sorgu yükünü paylaşır. Bkz. karıştırma sorgusu
hint.strategy=shuffle Strateji shuffle sorgusu, her düğümün verilerin bir bölümünü işlediği küme düğümlerinde sorgu yükünü paylaşır. Bkz. karıştırma sorgusu

Döndürülenler

Şema: Eşleşen anahtarlar da dahil olmak üzere her iki tablodaki tüm sütunlar.
Satırlar: Sol tablodaki sağ tablodaki satırlarla eşleşen yinelenenleri kaldırılmış tüm satırlar.

Örnekler

Varsayılan innerunique birleşimini kullanma

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

Çıktı

Anahtar Değer1 Anahtar1 Değer2
b 2 b 10
c 4 c 20
c 4 c 30

Not

'a' ve 'd' tuşları, hem sol hem de sağ tarafta eşleşen tuşlar olmadığından çıkışta görünmez.

Sorgu, birleştirme anahtarına göre sol tarafı yinelenenleri kaldırdıktan sonra iç birleşim olan varsayılan birleştirmeyi yürütür. Yinelenenleri kaldırma yalnızca ilk kaydı tutar. Yinelenenleri kaldırmadan sonra birleştirmenin sol tarafı şöyledir:

Anahtar Değer1
a 1
b 2
c 4

Innerunique join'ten iki olası çıkış

Not

Birleştirme aroması innerunique iki olası çıkış verebilir ve her ikisi de doğrudur. İlk çıkışta join işleci t1'de görünen ilk anahtarı rastgele seçti ve "val1.1" değeriyle t2 tuşlarıyla eşleştirdi. İkinci çıkışta join işleci t1'de görüntülenen ikinci anahtarı rastgele seçti ve "val1.2" değerini seçti ve t2 tuşlarıyla eşleştirdi.

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

Çıktı

anahtar değer anahtar1 değer1
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

Çıktı

anahtar değer anahtar1 değer1
1 val1.2 1 val1.3
1 val1.2 1 val1.4
  • Kusto, mümkün olduğunda , sonrasında gelen joinfiltreleri uygun birleştirme tarafına, sola veya sağa doğru göndermek için iyileştirilmiştir.
  • Bazen kullanılan aroma innerunique olur ve filtre birleştirmenin sol tarafına yayılır. Aroma otomatik olarak yayılır ve bu filtreye uygulanan anahtarlar çıkışta görünür.
  • Önceki örneği kullanın ve bir filtre where value == "val1.2" ekleyin. İkinci sonucu verir ve veri kümeleri için hiçbir zaman ilk sonucu vermez:
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"

Çıktı

anahtar değer anahtar1 değer1
1 val1.2 1 val1.3
1 val1.2 1 val1.4

Genişletilmiş oturum açma etkinliklerini alma

Bazı girişlerin bir login etkinliğin başlangıcı ve sonu olarak işaretlediği genişletilmiş etkinlikleri alın.

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