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.
Syntax
LeftTable|
join
kind=innerunique
[ İpuçları ] RightTableon
Koş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 $left belirtilir. |
İ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 $right belirtilir. |
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
join
sonra 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
İlgili içerik
- Diğer birleşim tatları hakkında bilgi edinin
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin