PowerQuery加載包含PowerQuery加載結果的Excel文件詳解

最近幾個月啃了不少PowerQuery教程,但是都沒提到PowerQuery加載包含PowerQuery加載結果的Excel文件,更遑論細節了。

經過測試,對這個應用場景的細節有了一些了解。
結論是:

包含加載到表的PowerQuery查詢結果的Excel文件能作為新查詢的源引入,但是如果只是作為連接或加載到數據源,則不能作為源引入到新的查詢中。

xlsx和xls兩種Excel文件格式:在加載速度上,xlsx更快;在使用便利性上,也是xlsx勝出,因為xls文件作為源引入新查詢時,無法準確顯示查詢名,容易引起迷惑。

過程記錄如下:

一、包含PowerQuery的文件如果是xlsx格式

這是最新的Excel文件格式。文件體積比xls這種老格式小得多,處理速度也快的多,而且用PowerQuery加載它,有新的特性。

(一)加載時只創建了連接的PowerQuery結果不能被加載。

如【圖1】,這個Excel文件有五個查詢:

圖1

新建一個文件,新建一個查詢,引入這個Excel文件,查詢編輯窗口顯示如【圖2】:

圖2

可以看到五個查詢沒有一個會顯示出來。導航器只顯示了有兩個數據源可以引入,一個是“表1”,一個是“人員管理”列表。原因在于,PowerQuery能夠將Excel中的Sheet和Table作為數據源引入,在本例中,“表1”所在的Sheet名稱為“人員管理列表”,所以,我們可以將它們同時作為數據源引入。本例中,這兩個數據源是一模一樣的,所以,任選一就好。【注意兩個源的圖標差異】

(二)加載到表的PowerQuery能被加載

圖3

如【圖3】,除了“表1”和“人員管理列表”,另外的“系統”是Excel文件中的PowerQuery查詢名,“Sheet1”是名為“系統”的查詢結果加載的表。所以兩個的結果其實也是一樣的,任選一即可。

(三)加載到數據模型的PowerQuery查詢不能被加載。

截圖略。

二、包含PowerQuery的文件如果是xls格式

xls是比較老的Excel文件格式,一不留神就會把Excel文件保存成這種格式。

(一)加載速度比xlsx格式明顯慢

我測試的這個文件不到4M的體積,感覺到很明顯的加載耗時差異。

(二)加載時只創建了連接的PowerQuery結果不能被加載。

圖2

五個查詢都不會顯示出來,唯一顯示出來的是該Excel文件中的一個包含數據的Sheet。

(三)加載到表的PowerQuery能被加載,如【圖4】

圖4

Sheet1即為加載到表的PowerQuery查詢結果,可以看到正常顯示。

注意它下面的Sheet1$ExternalData_1,我初步驗證,其結果是和Sheet1一模一樣的。但是這個奇怪的家伙哪里來的呢?凡是把PowerQuery查詢結果加載到表,在新查詢里添加這個文件時,都會出現這個包含“$ExternalData”的家伙。但是,如果我打開了那個要添加到新查詢的Excel文件,會發生什么?

結果見【圖5】:


圖5

可以看到,那個包含“$ExternalData”的奇怪家伙不見了。關閉Excel文件,則又出來了。

所以,以后我們通過Excel文件創建新查詢時,如果見到“$ExternalData”這樣的,大可不必理會。其實它不過是Excel文件中的查詢名而已,只是xls格式的Excel文件被作為查詢源引入時,PowerQuery不能識別而已(也許不是xls的錯?)

(四)加載到數據模型的PowerQuery查詢不能被加載。

截圖略。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容