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 kind birleştirme özelliği 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ı ederek fenomenin tüm örneklerini almanıza olanak tanır.

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

Syntax

LeftTable|joinkind=innerunique [ İpuçları ] RightTableonKoşul -ları

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

Parametreler

Ad Tür Gerekli Açıklama
LeftTable string ✔️ Bazen satırları birleştirilecek olan dış tablo olarak adlandırılan sol tablo veya tablosal ifade. olarak $leftbelirtilir.
İpuç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 her iki tabloda da aynı ada sahipse 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ı Birleştirme
hint.strategy=broadcast Küme düğümlerinde sorgu yükünü paylaşmanın yolunu belirtir. Bkz . yayın katılımı
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

Çıkış

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

Not

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

Sorgu, birleştirme tuşuna 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ı şu şekildedir:

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ı "val1.1" değeriyle rastgele seçti ve t2 tuşlarıyla eşleştirdi. İkinci çıkışta join işleci t1'de görünen ikinci anahtarı "val1.2" değeriyle rastgele 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

Çıkış

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

Çıkış

anahtar değer key1 değer1
1 val1.2 1 val1.3
1 val1.2 1 val1.4
  • Kusto, mümkün olduğunda, öğesinden joinsonra gelen filtreleri uygun birleştirme tarafına, sola veya sağa doğru göndermek için iyileştirilmiştir.
  • Bazen kullanılan lezzet innerunique olur ve filtre birleştirmenin sol tarafına yayılır. Flavor 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"

Çıkış

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