PowerQuery加载包含PowerQuery加载结果的Excel文件详解

最近几个月啃了不少PowerQuery教程,但是都没提到PowerQuery加载包含PowerQuery加载结果的Excel文件,更遑论细节了。

经过测试,对这个应用场景的细节有了一些了解。
结论是:

包含加载到表的PowerQuery查询结果的Excel文件能作为新查询的源引入,但是如果只是作为连接或加载到数据源,则不能作为源引入到新的查询中。

xlsx和xls两种Excel文件格式:在加载速度上,xlsx更快;在使用便利性上,也是xlsx胜出,因为xls文件作为源引入新查询时,无法准确显示查询名,容易引起迷惑。

过程记录如下:

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

这是最新的Excel文件格式。文件体积比xls这种老格式小得多,处理速度也快的多,而且用PowerQuery加载它,有新的特性。

(一)加载时只创建了连接的PowerQuery结果不能被加载。

如【图1】,这个Excel文件有五个查询:

PowerQuery加载包含PowerQuery加载结果的Excel文件详解_第1张图片
图1

新建一个文件,新建一个查询,引入这个Excel文件,查询编辑窗口显示如【图2】:

PowerQuery加载包含PowerQuery加载结果的Excel文件详解_第2张图片
图2

可以看到五个查询没有一个会显示出来。导航器只显示了有两个数据源可以引入,一个是“表1”,一个是“人员管理”列表。原因在于,PowerQuery能够将Excel中的Sheet和Table作为数据源引入,在本例中,“表1”所在的Sheet名称为“人员管理列表”,所以,我们可以将它们同时作为数据源引入。本例中,这两个数据源是一模一样的,所以,任选一就好。【注意两个源的图标差异】

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

PowerQuery加载包含PowerQuery加载结果的Excel文件详解_第3张图片
图3

如【图3】,除了“表1”和“人员管理列表”,另外的“系统”是Excel文件中的PowerQuery查询名,“Sheet1”是名为“系统”的查询结果加载的表。所以两个的结果其实也是一样的,任选一即可。

(三)加载到数据模型的PowerQuery查询不能被加载。

截图略。

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

xls是比较老的Excel文件格式,一不留神就会把Excel文件保存成这种格式。

(一)加载速度比xlsx格式明显慢

我测试的这个文件不到4M的体积,感觉到很明显的加载耗时差异。

(二)加载时只创建了连接的PowerQuery结果不能被加载。

PowerQuery加载包含PowerQuery加载结果的Excel文件详解_第4张图片
图2

五个查询都不会显示出来,唯一显示出来的是该Excel文件中的一个包含数据的Sheet。

(三)加载到表的PowerQuery能被加载,如【图4】

PowerQuery加载包含PowerQuery加载结果的Excel文件详解_第5张图片
图4

Sheet1即为加载到表的PowerQuery查询结果,可以看到正常显示。

注意它下面的Sheet1$ExternalData_1,我初步验证,其结果是和Sheet1一模一样的。但是这个奇怪的家伙哪里来的呢?凡是把PowerQuery查询结果加载到表,在新查询里添加这个文件时,都会出现这个包含“$ExternalData”的家伙。但是,如果我打开了那个要添加到新查询的Excel文件,会发生什么?

结果见【图5】:


PowerQuery加载包含PowerQuery加载结果的Excel文件详解_第6张图片
图5

可以看到,那个包含“$ExternalData”的奇怪家伙不见了。关闭Excel文件,则又出来了。

所以,以后我们通过Excel文件创建新查询时,如果见到“$ExternalData”这样的,大可不必理会。其实它不过是Excel文件中的查询名而已,只是xls格式的Excel文件被作为查询源引入时,PowerQuery不能识别而已(也许不是xls的错?)

(四)加载到数据模型的PowerQuery查询不能被加载。

截图略。

你可能感兴趣的:(PowerQuery加载包含PowerQuery加载结果的Excel文件详解)