共用方式為


教學課程:聯結多個資料表的資料

適用於:✅Microsoft網狀架構

聯結多個表格中的資料可讓您跨來源分析資料,並在資料點之間建立關聯性。 在 Kusto 查詢語言 (KQL) 中,使用 聯結查閱 運算子來合併資料表之間的資料。

在本教學課程中,您將瞭解如何:

本教學課程中的範例會使用StormEvents可在說明叢集中公開使用的數據表。 若要使用您自己的數據進行探索, 請建立您自己的免費叢集

本教學課程中的範例會使用StormEvents可在天氣分析範例數據公開使用的數據表。

必要條件

在可存取範例資料的查詢環境中執行查詢。 使用下列其中一項:

  • Microsoft 帳戶或 Microsoft Entra 用戶身份登入 說明叢集
  • Microsoft帳戶或Microsoft Entra 使用者身分識別
  • 具有 Microsoft Fabric 已啟用 容量Fabric 工作區

使用聯結運算子

範例 資料庫 有兩個相關的風暴事件表格: StormEventsPopulationData。 在本節中,您將聯結它們來分析僅使用一個資料表無法實現的資料。

了解資料

使用 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上將PopulationDataStormEvents聯接,以計算各州的人均財產損失總額。

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 StatePopulationData has StateName),則將聯結指定為:

StormEvents
| join kind=innerunique PopulationData on $left.State == $right.StateName  

$left 指聯結中的左表(外部表):StormEvents$right 指右(內)表: PopulationData

提示

使用 join 運算子於多種聯結類型。 請參閱 聯結類型清單

使用查閱運算子

查閱運算子會最佳化查詢,以使用維度資料表中的資料來擴充事實資料表。 它會使用維度資料表中的值來擴充事實資料表。 依預設,系統會假設左側資料表是較大的事實資料表,而右側資料表是較小的維度資料表。 此預設值與運算子的假設相反 join

協助叢集包括一個名為ContosoSales的資料庫,其中包含銷售資料。 下列查詢會用 lookup 來合併 SalesFactProducts 資料表,以依產品類別傳回總銷售額。

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 僅支援兩種結合類型: leftouterinner

聯結查詢產生的數據表

聯結相同資料表中的結果。

假設您想要同時具有閃電和雪崩事件的狀態清單。 使用聯結運算子來合併兩個查詢的資料列,這些查詢會針對資料行上的 State 每個事件類型傳回不同的狀態。

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

輸出

州/省
奧勒岡州
猶他州
懷俄明州
華盛頓州
科羅拉多州
愛達荷州
NEVADA