聯結多個表格中的資料可讓您跨來源分析資料,並在資料點之間建立關聯性。 在 Kusto 查詢語言 (KQL) 中,使用 聯結 和 查閱 運算子來合併資料表之間的資料。
在本教學課程中,您將瞭解如何:
本教學課程中的範例會使用StormEvents可在說明叢集中公開使用的數據表。 若要使用您自己的數據進行探索, 請建立您自己的免費叢集。
本教學課程中的範例會使用StormEvents可在天氣分析範例數據中公開使用的數據表。
必要條件
在可存取範例資料的查詢環境中執行查詢。 使用下列其中一項:
- Microsoft 帳戶或 Microsoft Entra 用戶身份登入 說明叢集
- Microsoft帳戶或Microsoft Entra 使用者身分識別
- 具有 Microsoft Fabric 已啟用 容量的 Fabric 工作區
使用聯結運算子
範例 資料庫 有兩個相關的風暴事件表格: 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 還有另一列包含該州的人口。
聯結數據表
在State上將PopulationData與StormEvents聯接,以計算各州的人均財產損失總額。
StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita
將 新增 | render columnchart 至查詢以將結果可視化。
如果直欄具有不同的名稱 (例如, StormEvents has State 和 PopulationData has StateName),則將聯結指定為:
StormEvents
| join kind=innerunique PopulationData on $left.State == $right.StateName
$left 指聯結中的左表(外部表):StormEvents。
$right 指右(內)表: PopulationData。
提示
使用 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 |
相關內容
- 瞭解不同類型的 聯結運算子。
- 執行 跨資料庫和跨叢集查詢。
- 請遵循 建立地理空間視覺效果 教學課程。