Bagikan melalui


Tutorial: Menggabungkan data dari beberapa tabel

Menggabungkan data dari beberapa tabel memungkinkan analisis yang lebih komprehensif dengan menggabungkan informasi dari sumber yang berbeda dan membuat hubungan baru antar titik data. Dalam Bahasa Kueri Kusto (KQL), operator gabungan dan pencarian digunakan untuk menggabungkan data di seluruh tabel.

Dalam tutorial ini, Anda akan mempelajari cara:

Contoh dalam tutorial ini menggunakan kluster bantuan yang tersedia untuk umum. Untuk menjelajahi dengan data Anda sendiri, buat kluster gratis Anda sendiri.

Prasyarat

  • Akun Microsoft atau Microsoft Entra identitas pengguna untuk masuk ke kluster bantuan

Gunakan operator join

Ada dua tabel dalam database Sampel yang terkait dengan peristiwa badai. Satu dipanggil StormEvents dan yang lainnya disebut PopulationData. Di bagian ini, Anda akan menggabungkan tabel untuk melakukan analisis data yang tidak akan dimungkinkan dengan satu tabel saja.

Memahami data

Gunakan operator take untuk melihat data apa yang dikandung setiap tabel.

StormEvents 
| take 5

Tabel berikut ini hanya memperlihatkan 6 dari 22 kolom yang dikembalikan.

Waktu mulai Akhir waktu EpisodeId EventId Provinsi EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI Angin Badai Petir ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA Angin Badai Petir ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 ATLANTIK SELATAN Puting beliung ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Hujan Deras ...
PopulationData 
| take 5

Output

Provinsi Populasi
ALABAMA 4918690
ALASKA 727951
ARIZONA 7399410
ARKANSAS 3025880
CALIFORNIA 39562900

Kedua tabel berisi State kolom. Tabel StormEvents memiliki lebih banyak kolom, dan PopulationData hanya memiliki satu kolom lain yang berisi populasi status yang diberikan.

Menggabungkan tabel

Gabungkan PopulationData tabel dengan StormEvents pada kolom umum State untuk menemukan total kerusakan properti yang disebabkan oleh badai per kapita berdasarkan status.

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

Tambahkan | render columnchart ke kueri untuk memvisualisasikan hasilnya.

Cuplikan layar bagan kolom memperlihatkan kerusakan properti per kapita menurut status.

Tip

Ada banyak jenis gabungan yang dapat Anda lakukan dengan join operator. Lihat daftar rasa gabungan.

Menggunakan operator pencarian

Operator pencarian mengoptimalkan performa kueri di mana tabel fakta diperkaya dengan data dari tabel dimensi. Ini memperluas tabel fakta dengan nilai yang dicari dalam tabel dimensi. Untuk performa terbaik, sistem secara default mengasumsikan bahwa tabel kiri adalah tabel fakta yang lebih besar, dan tabel kanan adalah tabel dimensi yang lebih kecil. Ini persis berlawanan dengan asumsi yang digunakan oleh join operator.

Dalam kluster bantuan, ada database lain yang disebut ContosoSales yang berisi data penjualan. Kueri berikut ini menggunakan lookup untuk menggabungkan SalesFact tabel dan Products dari database ini untuk mendapatkan total penjualan menurut kategori produk.

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

Output

ProductCategoryName TotalSales
Game dan Mainan 966782
TV dan Video 715024
Kamera dan camcorder 323003
Komputer 313487
Peralatan Rumah Tangga 237508
Audio 192671
Ponsel 50342
Buku Musik, Film, dan Audio 33376

Catatan

Operator lookup hanya mendukung dua rasa gabungan: leftouter dan inner.

Menggabungkan tabel yang dihasilkan kueri

Gabungan juga dapat dilakukan berdasarkan hasil kueri dari tabel yang sama.

Katakanlah Anda ingin membuat daftar status di mana peristiwa petir dan longsoran salju terjadi. Gunakan operator gabungan untuk menggabungkan baris dua tabel—satu berisi data tentang peristiwa petir dan yang lain yang berisi data pada peristiwa longsoran salju—berdasarkan State kolom.

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

Output

Provinsi
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA