Excel中PowerQuery的全自动动态路径

这种做法并不是一劳永逸的,路径变更以后,还是需要手动调整路径参数,只是相对方便一些而已。

在PowerBI中目前只能按照上述方式实现,但是如果是在Excel中利用PowerQuery来清洗数据,是可以做到自动更改路径地址的。

假设是从单一的文件中获取数据,以数据源文件为Excel工作簿为例,PowerQuery中【源】的代码是这样的:

= Excel.Workbook(File.Contents("D:\PowerBI星球\PowerQuery动态路径\示例数据.xlsx"), null, true)

现在要做的就是将这串代码中的路径文本动态化,方法很简单,只需要用Excel公式将当前的路径提取出来。

在PowerQuery查询所在的Excel工作簿中新建一个sheet,A2中录入文件名称,B2中输入公式:

=LEFT(CELL("filename"),FIND("[",CELL("filename"))-1)&A2

做成这样的一个表:

然后光标放到这个表的任意位置,在【数据】选项卡下,点击“来自表/区域”,

将这个表导入到PowerQuery编辑器中,

这样就得到了文件路径表,第1行路径列的数据可以用  文件路径{0}[路径]  表示,只需要将原查询中路径地址更改为这个代码就行了,

修改完参数后,可能会出现如下报错信息:

这种情况需要在文件>选项和设置>查询选项>隐私中,

将隐藏级别更改为“始终忽略隐私级别设置”

然后点击刷新即可。

如果源文件是文件夹,同样可以利用这种方法,先获取文件夹的地址:

按上述方式导入到PQ后,然后将获取文件夹数据的查询【源】代码中的路径更改为文件夹的路径即可:

这样处理以后,无论将文件移动到哪里,还是发给别人,都不用调整代码、直接刷新而不会出错。

该方法的关键是必须将PowerQuery查询所在的工作簿与源文件放到同一个路径下,这样获取本文件的路径,同时也就是源文件的路径。

最后说明一下,本文的方法仅适用于Excel,不适用于PowerBI,为什么强大的PowerBI反而没有这个功能呢?

其实很简单,因为在PowerBI中,还没有函数获取本文件的路径地址,而Excel通过cell函数就可以实现,上述方面正是利用了Excel的这个特性,实现了PowerQuery源数据路径的自动调整。


PowerBI星球的历史精华文章合辑


(0)

相关推荐