这种做法并不是一劳永逸的,路径变更以后,还是需要手动调整路径参数,只是相对方便一些而已。
在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星球的历史精华文章合辑:
联系客服