教學課程:從多個數據表聯結數據
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
從多個數據表聯結數據可藉由結合不同來源的資訊,以及建立數據點之間的新關聯性,來提供更全面的分析。 在 Kusto 查詢語言 (KQL)中,聯結和查閱運算符可用來跨數據表合併數據。
在本教學課程中,您將了解如何:
本教學課程中的範例會使用StormEvents
可在說明叢集中公開使用的數據表。 若要使用您自己的數據進行探索, 請建立您自己的免費叢集。
本教學課程中的範例會使用StormEvents
可在天氣分析範例數據中公開使用的數據表。
必要條件
若要執行下列查詢,您需要具有範例數據的存取權的查詢環境。 您可以使用下列其中一項:
- Microsoft帳戶或Microsoft Entra 使用者身分識別
- 具有Microsoft網狀架構功能的容量的網狀架構工作區
使用聯結運算子
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 | 12,554 | 68796 | 密西西比州 | 雷暴風 | ... |
2007-12-30T16:00:00Z | 2007-12-30T16:05:00Z | 11749 | 64588 | 喬治亞州 | 雷暴風 | ... |
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
輸出
州/省 | 母體 |
---|---|
阿拉巴馬州 | 4918690 |
阿拉斯加州 | 727951 |
亞利桑那州 | 7399410 |
阿肯色州 | 3025880 |
加利福尼亞州 | 39562900 |
這兩個數據表都包含一個數據行 State
。 數據表 StormEvents
有更多數據行,而且 PopulationData
只有一個包含指定狀態母體擴展的其他數據行。
聯結數據表
將PopulationData
數據表與通用State
數據行上的 聯結StormEvents
,以找出由州/州風暴造成的總財產損失。
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
輸出
州/省 |
---|
奧勒岡州 |
猶他州 |
懷俄明州 |
華盛頓州 |
科羅拉多州 |
愛達荷州 |
NEVADA |
相關內容
- 瞭解不同類型的 聯結運算符
- 瞭解如何執行 跨資料庫和跨叢集查詢
- 遵循建立地理空間視覺效果教學課程