練習 - 使用聯合運算子合併資料表結果
在此練習中 union
,您會使用 操作員來結合從各個國家/地區收集的銷售事實。
使用 union
運算子
您的銷售小組要求您建立單一資料表,以合併下列每個國家/地區的 10 個任意銷售結果:澳大利亞、英國和美國。
let
使用語句來建立三個表格式表達式,每個運算式都有來自 SalesFact 數據表中特定國家/地區的 10 筆記錄,以代表來自三個國家/地區的銷售數據。 您可以將它們視為三個獨立的資料表。
檢查這些資料表,您可以看到它們具有相同的資料行。 唯一的差異在於數據行中的數據 RegionCountryName
。 union
使用 運算符,結合英國的銷售事實數據表和 美國 與澳大利亞的銷售事實數據表。
執行下列查詢。
let AustraliaSales = SalesFact // Sales facts from Australia | lookup Customers on CustomerKey | where RegionCountryName == 'Australia' | take 10; let UnitedKingdomSales = SalesFact // Sales facts from United Kingdom | lookup Customers on CustomerKey | where RegionCountryName == 'United Kingdom' | take 10; let UnitedStatesSales = SalesFact // Sales facts from United States | lookup Customers on CustomerKey | where RegionCountryName == 'United States' | take 10; AustraliaSales | union UnitedKingdomSales, UnitedStatesSales
結果應該如下圖所示:
請注意,您會從三個資料表取得所有資料列。 嘗試修改查詢以新增法國的模擬資料,並將其與來自其他國家/地區的資料結合。
在下列各章節中,您會使用 let
陳述式來建立模擬資料的臨時資料表,具有案例所需的資料行。
在具有不同資料行的資料表中使用 union
運算子
下個月,您的銷售小組會再次要求您從三個國家/地區建立銷售資料。 當您這次檢查資料表時,您會注意到它們有不同的資料行。 運算子的 union
一件好事是,即使數據表有不同的數據行,也會合併數據表。 針對此查詢,您會使用 union
運算子的替代語法,而不需要使用管道輸入。
執行下列查詢。
let AustraliaSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'Australia' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, CityName; let UnitedKingdomSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'United Kingdom' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, Occupation; let UnitedStatesSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'United States' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, StateProvinceName; union AustraliaSales, UnitedKingdomSales, UnitedStatesSales
結果應該如下圖所示:
請注意,您會從三個資料表取得所有資料列,以及從任何資料表中取得出現的所有資料行。 輸入數據列未定義的儲存格會設定為 null。 嘗試修改查詢以新增更多資料行,並查看其值如何填入結果中。
在具有不同資料行的資料表使用 union
運算子,並只傳回所有資料表中出現的資料行
下個月,您的銷售小組會再次要求您從三個國家/地區建立銷售資料,但這次他們只想要這三個資料表共同的資料行。 之前,您看到 union
運算子會傳回在任何資料表中出現的所有資料行。 此行為是運算符的 union
預設值,稱為外部聯集,不過最佳做法是一律明確指定等位類型以清楚起見。
若要只傳回所有數據表中發生的數據行,請藉由指定 kind=inner
自變數,在相同的模擬數據上使用內部聯集:
執行下列查詢。
let AustraliaSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'Australia' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, CityName; let UnitedKingdomSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'United Kingdom' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, Occupation; let UnitedStatesSales = SalesFact | lookup Customers on CustomerKey | where RegionCountryName == 'United States' | take 10 | project SalesAmount, TotalCost, DateKey, RegionCountryName, StateProvinceName; union kind=inner AustraliaSales, UnitedKingdomSales, UnitedStatesSales
結果應該如下圖所示:
請注意,您會從三個資料表取得所有資料列,以及僅在所有資料表中都出現的資料行。
現在嘗試修改查詢,藉由以相同名稱的數據行擴充每個數據表來新增更常見的數據行。 然後,查看其值如何在結果中填入。