最近幾個月啃了不少PowerQuery教程,但是都沒提到PowerQuery加載包含PowerQuery加載結果的Excel文件,更遑論細節了。
經過測試,對這個應用場景的細節有了一些了解。
結論是:
包含加載到表的PowerQuery查詢結果的Excel文件能作為新查詢的源引入,但是如果只是作為連接或加載到數據源,則不能作為源引入到新的查詢中。
xlsx和xls兩種Excel文件格式:在加載速度上,xlsx更快;在使用便利性上,也是xlsx勝出,因為xls文件作為源引入新查詢時,無法準確顯示查詢名,容易引起迷惑。
過程記錄如下:
一、包含PowerQuery的文件如果是xlsx格式
這是最新的Excel文件格式。文件體積比xls這種老格式小得多,處理速度也快的多,而且用PowerQuery加載它,有新的特性。
(一)加載時只創建了連接的PowerQuery結果不能被加載。
如【圖1】,這個Excel文件有五個查詢:
新建一個文件,新建一個查詢,引入這個Excel文件,查詢編輯窗口顯示如【圖2】:
可以看到五個查詢沒有一個會顯示出來。導航器只顯示了有兩個數據源可以引入,一個是“表1”,一個是“人員管理”列表。原因在于,PowerQuery能夠將Excel中的Sheet和Table作為數據源引入,在本例中,“表1”所在的Sheet名稱為“人員管理列表”,所以,我們可以將它們同時作為數據源引入。本例中,這兩個數據源是一模一樣的,所以,任選一就好。【注意兩個源的圖標差異】
(二)加載到表的PowerQuery能被加載
如【圖3】,除了“表1”和“人員管理列表”,另外的“系統”是Excel文件中的PowerQuery查詢名,“Sheet1”是名為“系統”的查詢結果加載的表。所以兩個的結果其實也是一樣的,任選一即可。
(三)加載到數據模型的PowerQuery查詢不能被加載。
截圖略。
二、包含PowerQuery的文件如果是xls格式
xls是比較老的Excel文件格式,一不留神就會把Excel文件保存成這種格式。
(一)加載速度比xlsx格式明顯慢
我測試的這個文件不到4M的體積,感覺到很明顯的加載耗時差異。
(二)加載時只創建了連接的PowerQuery結果不能被加載。
五個查詢都不會顯示出來,唯一顯示出來的是該Excel文件中的一個包含數據的Sheet。
(三)加載到表的PowerQuery能被加載,如【圖4】
Sheet1即為加載到表的PowerQuery查詢結果,可以看到正常顯示。
注意它下面的Sheet1$ExternalData_1,我初步驗證,其結果是和Sheet1一模一樣的。但是這個奇怪的家伙哪里來的呢?凡是把PowerQuery查詢結果加載到表,在新查詢里添加這個文件時,都會出現這個包含“$ExternalData”的家伙。但是,如果我打開了那個要添加到新查詢的Excel文件,會發生什么?
結果見【圖5】:
可以看到,那個包含“$ExternalData”的奇怪家伙不見了。關閉Excel文件,則又出來了。
所以,以后我們通過Excel文件創建新查詢時,如果見到“$ExternalData”這樣的,大可不必理會。其實它不過是Excel文件中的查詢名而已,只是xls格式的Excel文件被作為查詢源引入時,PowerQuery不能識別而已(也許不是xls的錯?)
(四)加載到數據模型的PowerQuery查詢不能被加載。
截圖略。