- 從數據到Excel自動化報表:Power Query和Power Pivot實戰
- 黃海劍(大海)
- 1692字
- 2019-07-16 10:56:27
3.6 一個例子說明“合并查詢的6個聯接類型”
小勤:大海,關聯表的合并查詢功能里的聯接種類怎么這么多啊?有左外部、右外部、完全外部、內部、左反、右反共6種,分別都是什么意思呢(見圖3-40)?

圖3-40 Power Query中的表間聯接種類
大海:其實括號里的文字就表達了它們的意思了。只是因為沒有具體數據,所以不太好理解而已。
小勤:看概念和文字真的很難理解,即使理解了,感覺心里還是沒底。
大海:對。因為沒有數據帶來的感觀認識,即使感覺上理解了,也很難達到活用的狀態。所以,我專門準備了一套簡單的數據來演示給你看,回頭你也分別操作一下,然后對比一下結果,這樣就感覺很明顯了。
小勤:這真是太好了!
大海:我這里有一個訂單表和一個訂單明細表。先看一下這兩個表的情況,其中,訂單表里有一些數據是明細表里沒有的,明細表里也有一些數據是訂單表里沒有的。
另外,在后面操作時將基于訂單表創建合并查詢,然后選明細表,所以這里將訂單表叫左表,將明細表叫右表,如圖3-41所示。

圖3-41 示例數據說明
接下來將兩個表的數據都獲取到Power Query里。因為只需要在Power Query里觀察各種聯接類型的結果,所以只需要以“僅創建連接”方式獲取數據。
Step 01 通過“以表格”方式獲取訂單表到Power Query里后,修改查詢名稱為“訂單表”,如圖3-42所示。
Step 02 同樣,通過“以表格”方式獲取明細表到Power Query中,然后修改查詢名稱,如圖3-43所示。

圖3-42 修改訂單表查詢名稱

圖3-43 修改訂單明細表的查詢名稱
Step 03 為了讓結果比較更明顯一點,我們把兩個表的其他列都刪掉,只剩訂單ID列:分別選中“訂單表”或“訂單明細”查詢,單擊“訂單ID”列的列名以選中該列,切換到“開始”選項卡,單擊“刪除列”按鈕,在下拉菜單中選擇“刪除其他列”命令,如圖3-44和圖3-45所示。

圖3-44 刪除訂單表中不需要的列

圖3-45 刪除訂單明細表中不需要的列
Step 04 單擊“訂單表”查詢,切換到“開始”選項卡,單擊“合并查詢”按鈕,在下拉菜單中選擇“將查詢合并為新查詢”命令,如圖3-46所示。
Step 05 生成左外部查詢:在彈出的對話框中選擇“訂單明細”表,并依次單擊兩表中的“訂單ID”列完成匹配,在“聯接種類”中選擇“左外部(第一個中的所有行,第二個中的匹配行)”選項,單擊“確定”按鈕,如圖3-47所示。

圖3-46 合并到新查詢

圖3-47 設置“左外部”合并查詢
Step 06 展開合并數據:單擊“訂單明細”列右側的數據展開按鈕,保持“使用原始列名作為前綴”復選框為選中狀態,單擊“確定”按鈕,如圖3-48所示。
Step 07 修改查詢名稱:單擊選中新生成的查詢“Merge1”,在“查詢設置”的“屬性/名稱”中將“名稱”修改為“左外部”,如圖3-49所示。

圖3-48 展開合并查詢的結果數據

圖3-49 修改查詢的名稱
Step 08 重復Step 04 ~Step 07 分別生成右外部、完全外部、內部、左反、右反查詢,結果如圖3-50所示。

圖3-50 選擇不同的聯接類型
接下來開始比較各種聯接類型的結果。
● 左外部:只要訂單表(左表)里有的數據,結果表里都會有。但明細表(右表)里有些列沒有數據,所以匹配過來后會成為null(空值),如圖3-51所示。
● 右外部:和左外部相反,即明細表(右表)里有的數據,結果表里都會有。但因為訂單表(左表)里有部分數據沒有,所以合并后用null值表示,如圖3-52所示。

圖3-51 左外部查詢的結果

圖3-52 右外部查詢的結果
● 完全外部:不管哪個表里的數據,全都進入結果表。對于一方沒有的數據,合并后顯示為null值,如圖3-53所示。
● 內部:跟“完全外部”相反,兩個表都有的數據才進入結果表,如圖3-54所示。

圖3-53 完全外部查詢的結果

圖3-54 內部查詢的結果
● 左反:只有訂單表(左表)有而明細表(右表)沒有的數據,才進結果表。這種用法經常用于檢查哪些訂單缺了明細表等,如圖3-55所示。
● 右反:和“左反”相反,只有明細表(右表)有而訂單表(左表)沒有的數據,才進入結果表,如圖3-56所示。

圖3-55 左反查詢的結果

圖3-56 右反查詢的結果
最后總結見表 3-1(“我”表示左表,“你”表示右表)。
表3-1 Power Query合并查詢聯接種類參考表

表3-1中的函數參數是進行合并操作時生成的代碼參數,如圖3-57所示。

圖3-57 合并查詢操作生成的代碼及參數
如果在Power Query的操作中可以選擇相應的聯接類型,則這些參數會自動生成。對于版本比較低的用戶,如果操作過程中不能選擇需要的聯接類型,可在合并后生成的代碼中直接加入或修改該參數來達到相應的效果。
- Excel 2013使用詳解
- MATLAB 2020中文版從入門到精通
- 新編電腦辦公(Windows 7 + Office 2013版)從入門到精通
- Office 365 管理實踐
- Keynote:超越PPT的蘋果商業幻燈片(第2版)
- Word Excel PPT商務辦公從新手到高手(白金全彩版)
- 隨身查:一小時搞定你想要的PPT
- PPT演義:100%幻燈片設計密碼
- 從零開始學Excel VBA
- Excel數據透視表應用之道(雙色板)
- Word/Excel/PPT從入門到精通
- Excel數據處理與統計初步(第4版)
- 30天精學Excel:從菜鳥到數據分析高手
- Word/Excel 2010高效辦公:文秘與行政辦公
- Office 2010辦公應用立體化教程(微課版)