Öğretici: Birden çok tablodan verileri birleştirme

Birden çok tablodan veri birleştirme, farklı kaynaklardan gelen bilgileri birleştirerek ve veri noktaları arasında yeni ilişkiler oluşturarak daha kapsamlı bir analiz sağlar. Kusto Sorgu Dili (KQL) içinde birleştirme ve arama işleçleri tablolar arasında verileri birleştirmek için kullanılır.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

Bu öğreticideki örneklerde genel kullanıma açık yardım kümesi kullanılır. Kendi verilerinizle keşfetmek için kendi ücretsiz kümenizi oluşturun.

Önkoşullar

  • Yardım kümesinde oturum açmak için bir Microsoft hesabı veya Microsoft Entra kullanıcı kimliği

Join işlecini kullanma

Örnekler veritabanında fırtına olaylarıyla ilgili iki tablo vardır. Biri çağrılır StormEvents , diğeri ise olarak adlandırılır PopulationData. Bu bölümde, tek bir tabloyla mümkün olmayacak veri analizi gerçekleştirmek için tabloları birleştireceksiniz.

Verileri anlama

Her tablonun hangi verileri içerdiğini görmek için take işlecini kullanın.

StormEvents 
| take 5

Aşağıdaki tabloda döndürülen 22 sütunun yalnızca 6'sı gösterilmektedir.

StartTime EndTime Bölüm Kimliği EventId Durum Olay türü ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORİDA Kasırga ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MİSSİSSİPPİ Fırtına Rüzgarı ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GÜRCİSTAN Fırtına Rüzgarı ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTIK GÜNEY Su Borusu ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORİDA Şiddetli Yağmur ...
PopulationData 
| take 5

Çıkış

Durum Popülasyon
ALABAMA 4918690
ALASKA 727951
ARİZONA 7399410
ARKANSAS 3025880
CALİFORNİA 39562900

Her iki tablo da bir State sütun içerir. Tabloda StormEvents çok daha fazla sütun vardır ve PopulationData belirtilen durumun popülasyonunu içeren tek bir sütunu daha vardır.

Tabloları birleştirme

Eyalete PopulationData göre kişi başına fırtınaların neden olduğu toplam özellik hasarını bulmak için ortak State sütundaki ile StormEvents tabloya katılın.

StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita

Sonucu görselleştirmek için sorguya ekleyin | render columnchart .

Eyalete göre kişi başına özellik hasarını gösteren sütun grafiğinin ekran görüntüsü.

İpucu

işleciyle join gerçekleştirebileceğiniz birçok birleşim türü vardır. Birleştirme tatlarının listesine bakın.

Arama işlecini kullanma

Arama işleci, olgu tablosunun boyut tablosundaki verilerle zenginleştirildiği sorguların performansını iyileştirir. Olgu tablosunu boyut tablosunda aranan değerlerle genişletir. En iyi performans için sistem varsayılan olarak sol tablonun daha büyük olgu tablosu, sağ tablonun ise küçük boyut tablosu olduğunu varsayar. Bu, işleç tarafından kullanılan varsayımın join tam tersidir.

Yardım kümesinde satış verilerini içeren adlı ContosoSales başka bir veritabanı vardır. Aşağıdaki sorgu, ürün kategorisine göre toplam satışları SalesFact almak üzere bu veritabanındaki ve Products tablolarını birleştirmek için kullanırlookup.

SalesFact
| lookup Products on ProductKey
| summarize TotalSales = count() by ProductCategoryName
| order by TotalSales desc

Çıkış

Productcategoryname TotalSales
Oyunlar ve Oyuncaklar 966782
TV ve Video 715024
Fotoğraf Makineleri ve kameralar 323003
Bilgisayarlar 313487
Ev Aletleri 237508
Ses 192671
Cep telefonları 50342
Müzik, Filmler ve Sesli Kitaplar 33376

Not

lookup işleci yalnızca iki birleşim çeşidini destekler: leftouter ve inner.

Sorgu tarafından oluşturulan tabloları birleştirme

Birleştirmeler aynı tablodan gelen sorgu sonuçlarına göre de yapılabilir.

Hem yıldırım hem de avalanş olaylarının gerçekleştiği durumların listesini oluşturmak istediğinizi varsayalım. Biri şimşek olaylarıyla ilgili verileri, diğeri de avalanche olaylarıyla ilgili verileri içeren iki tablonun satırlarını sütuna göre birleştirmek için join işlecini State kullanın.

StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
    StormEvents 
    | where EventType == "Avalanche"
    | distinct State
    )
    on State
| project State

Çıkış

Durum
OREGON
UTAH
WYOMİNG
WASHİNGTON
COLORADO
IDAHO
NEVADA