innerunique join
Şunlar için geçerlidir: ✅Microsoft Fabric✅
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.
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 $left belirtilir. |
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 $right belirtilir. |
Koşullar | string |
✔️ | LeftTable'dan gelen satırların RightTable'dangelen 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 RightColumnON $left. == söz dizimini $right. 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
Örnekleri gözden geçirin ve Veri Gezgini sorgu sayfanızda çalıştırın.
Varsayılan innerunique birleşimini kullanma
Örnek sorgu, anahtarların eşleştiği X ve Y tablolarındaki satırları birleştirir ve yalnızca her iki tabloda da bulunan satırları gösterir
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
join
filtreleri 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