教學課程:聯結多個數據表的數據
從多個數據表聯結數據可藉由結合不同來源的資訊,以及建立數據點之間的新關聯性,來提供更完整的分析。 在 Kusto 查詢語言 (KQL) 中,聯結和查閱運算符是用來跨數據表合併數據。
在本教學課程中,您將了解如何:
本教學課程中的範例會使用可公開取得 的說明 叢集。 若要使用您自己的數據進行探索, 請建立您自己的免費叢集。
必要條件
- 用來登入說明叢集的 Microsoft 帳戶或 Microsoft Entra 使用者身分識別
使用聯結運算子
Samples 資料庫中有兩個與 storm 事件相關的數據表。 其中一個稱為 StormEvents
,另一個稱為 PopulationData
。 在本節中,您將聯結數據表以執行無法單獨使用一個數據表的數據分析。
了解資料
使用 take 運算符來查看每個資料表所包含的數據。
StormEvents
| take 5
下表只顯示22個傳回數據行的6個。
StartTime | EndTime | EpisodeId | EventId | 州 | EventType | ... |
---|---|---|---|---|---|---|
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | 佛羅里達州 | 龍捲風 | ... |
2007-12-20T07:50:00Z | 2007-12-20T07:53:00Z | 12554 | 68796 | 密西西比州 | Thunderstorm Wind | ... |
2007-12-30T16:00:00Z | 2007-12-30T16:05:00Z | 11749 | 64588 | 喬治亞州 | Thunderstorm Wind | ... |
2007-09-29T08:11:00Z | 2007-09-29T08:11:00Z | 11091 | 61032 | 大西洋南部 | 水龍捲 | ... |
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | 佛羅里達州 | 暴雨 | ... |
PopulationData
| take 5
輸出
State | 母體 |
---|---|
ALABAMA | 4918690 |
阿拉斯加州 | 727951 |
亞利桑那州 | 7399410 |
阿肯色州 | 3025880 |
加利福尼亞州 | 39562900 |
這兩個數據表都包含數據 State
行。 數據表 StormEvents
有更多數據行,而且 PopulationData
只有一個包含指定狀態母體擴展的其他數據行。
聯結數據表
將 PopulationData
數據表聯結至 StormEvents
通用 State
數據行上的 ,以尋找因州/州/大暴雨所造成的總屬性損害。
StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita
將 新增 | render columnchart
至查詢,以可視化方式呈現結果。
提示
您可以使用運算子執行 join
許多類型的聯結。 請參閱 聯結類別清單。
使用查閱運算子
查閱運算符會優化查詢的效能,其中事實數據表會利用維度數據表的數據進行擴充。 其會使用在維度資料表中查閱的值來擴充事實資料表。 為了獲得最佳效能,系統預設會假設左數據表是較大的事實數據表,而右數據表則是較小的維度數據表。 這與假設使用 join
運算子的情況完全相反。
在說明叢集中,有另一個稱為 ContosoSales
的資料庫,其中包含銷售數據。 下列查詢會使用 lookup
來合併 SalesFact
此資料庫的 和 Products
數據表,以依產品類別取得總銷售額。
SalesFact
| lookup Products on ProductKey
| summarize TotalSales = count() by ProductCategoryName
| order by TotalSales desc
輸出
ProductCategoryName | TotalSales |
---|---|
遊戲和玩具 | 966782 |
電視和視訊 | 715024 |
相機和攝影機 | 323003 |
電腦 | 313487 |
家用設備 | 237508 |
音訊 | 192671 |
手機 | 50342 |
音樂、電影和有聲書 | 33376 |
注意
運算子 lookup
只支援兩種聯結類別: leftouter
和 inner
。
聯結查詢產生的數據表
聯結也可以根據來自相同數據表的查詢結果來完成。
假設您想要建立同時發生閃電和雪道事件的狀態清單。 使用聯結運算符,根據數據行合併兩個數據表的數據列,一個包含閃電事件的數據,另一個包含雪雪事件 State
的數據。
StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
StormEvents
| where EventType == "Avalanche"
| distinct State
)
on State
| project State
輸出
State |
---|
俄勒岡州 |
猶他州 |
WYOMING |
WASHINGTON |
科羅拉多州 |
愛達荷州 |
內華達州 |
相關內容
- 瞭解不同類型的 聯結運算符
- 瞭解如何執行 跨資料庫和跨叢集查詢
- 遵循建立地理空間視覺效果教學課程
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應