PowerBI从Onedrive个人版获取文件!从Onedrive 个人版中获取文件不是一件容易事,虽然实现了获取文件,但是各种操作都不是很方便。比如无法添加多个文件,无法创建度量值,无法建立多个表的关系等。
不过还是有朋友进行过一些尝试:
通过获取PowerBI数据集的方式来变相使用onedrive的源,像二道贩子一样。可以解决新建度量值的问题,可以解决建立多个表之间关系的问题。不过仍然无法解决继续添加数据源的问题,也无法修改数据比如新建列等。
问题还是很多的,并没有解决。
所以还是换个思路吧。
Onedrive for business本质上是SharePoint,而PowerBI本身有SharePoint的接口,因此自然是很顺畅的。
但是Onedrive.live只是一个网盘,是一个普通的网络存储位置,因此一定是是用Web函数识别并获取文件的链接。
接下来有两种可能:
一种:文件是加密的,链接本身不能打开文件,只能通过登录账号验证来实现;
另一种:文件链接是可以分享并直接下载的,无需登录。
很明显如果是第二种就再好不过了。
所以我们来分析一下onedrive.live文件的打开链接:
https://onedrive.live.com/edit.aspx?cid=585e435bf1410336&page=view&resid=585E435BF1410336!109&parId=585E435BF1410336!101&app=Excel
比较有意思,链接中好像给了一些像cookie一样的东西。仿佛在告诉我们,无需账号密码就可以使用这个文件。但是如果我们直接将链接复制到新建的隐私窗口,会出现登录窗口:
这也难怪,因为本身链接中就是edit,要编辑这个文件,登录账号是必须的。
别急。
我们又注意到Onedrive personal中的文件是可以嵌入到博客或者网站的,这个功能是Onedrive for business没有的:
这就更有意思了。
链接为:
https://onedrive.live.com/embed?cid=5F8406E35EAE0A49&resid=5F8406E35EAE0A49!1354&authkey=AKAh2kdu6c8V58M&em=2
直接将链接复制到隐私窗口的地址栏打开:
就是一个没有其他任何编辑方式的表格,且不需要登录。我们试一下直接用powerbi获取这个链接:
无法获取数据。
另外,我们还可以对文件进行共享:
共享后我们发现链接为:
https://onedrive.live.com/view.aspx?resid=5F8406E35EAE0A49!1354&ithint=file%2Cxlsx&authkey=!AGEWuxYTpW6Lvr0
好了, 至此我们得到了关于这个Onedrive personal中的文件的三个链接,分别是:
编辑链接https://onedrive.live.com/edit.aspx?cid=5f8406e35eae0a49&page=view&resid=5F8406E35EAE0A49!1354&parId=5F8406E35EAE0A49!229&app=Excel
嵌入链接https://onedrive.live.com/embed?cid=5F8406E35EAE0A49&resid=5F8406E35EAE0A49!1354&authkey=AKAh2kdu6c8V58M&em=2
分享查看链接https://onedrive.live.com/view.aspx?resid=5F8406E35EAE0A49!1354&ithint=file%2Cxlsx&authkey=!AGEWuxYTpW6Lvr0
然后,edit、embed和view分别表示编辑、嵌入和查看,也就是链接本身代表着其意义。而后面的cid、resid是相同的,这时候我们能否大胆揣摩一下如何获取下载的链接呢?根据常识,我们猜一下:
download?(兴奋)
替换一下?(超级兴奋)
替换第一个试试:
https://onedrive.live.com/download?cid=5f8406e35eae0a49&page=view&resid=5F8406E35EAE0A49!1354&parId=5F8406E35EAE0A49!229&app=Excel
结果发现,在隐私窗口下需要登录:
不行,就替换第二个试试:
https://onedrive.live.com/download?cid=5F8406E35EAE0A49&resid=5F8406E35EAE0A49!1354&authkey=AKAh2kdu6c8V58M&em=2
在隐私窗口打开,弹出来一个对话框:
哇哦!成功了。
再试试将第三个链接中的view改为download:
https://onedrive.live.com/download.aspx?resid=5F8406E35EAE0A49!1354&ithint=file%2Cxlsx&authkey=!AGEWuxYTpW6Lvr0
也成功了!
因为edit链接本身就是需要登录的,所以即便替换成download仍然还需要登录,但是embed和view本身就不需要登录,所以替换为download之后可以直接下载了。
因此,从Onedrive personal获取文件链接的思路是:
1.打开Onedrive personal选中文件;
2.点击”嵌入“,并获得embed链接;
3.将链接中的embed替换为download,得到新的链接
到了这一步后面就简单了吧。
根据上文说的,获取了链接,我们就可以从Web获取数据了:
但是等了很长时间却出现这个:
原因是电脑并没有【科学】上网,【科学】了之后就会正常的:
到powerquery编辑器中查看,使用的函数与Onedrive for business一样都是Excel.Workbook(Web.Contents(“url”), null, true):
搭建好报告,在云端修改一下数据,本地刷新一下。
结果发现本地刷新报告同样需要【科学】,否则:
发布到云端,以世纪互联版PowerBI为例,因为我们使用的是公开链接,所以身份验证是匿名即可。
并且数据全部来自于网络,无需网关即可刷新。
尝试刷新一下:
发现出错,错误原因是底层链接被关闭,这应当和本地刷新出错一样,都是与服务器链接中断。【科学】之后刷新就正常了:
我们再来试一试PowerBI国际版,同样的以上操作,然后在【非科学状态】下刷新:
没问题。
至此,从Onedrive for business和Onedrive personal中获取文件就全部走通了。
相关文章:
Power BI刷新避免使用网关,蚊子肉也是腿,电费也是钱
PowerBI从Onedrive文件夹中获取多个文件,依然不使用网关
针对“PowerBI从Onedrive获取文件”两篇文章做个补充
从“对Onedrive个人版的无可奈何”到“云端下载PBIX文件的限制条件”
题外话:
为什么必须在科学状态下才能获取数据呢?
因为Onedrive personal的网页端被挡在了墙外(客户端是可以登录的),为什么呢?
因为,文中你也能看到,一个Onedrive personal中的文件一旦分享后就是一个可以不经过审查就可以任意传播的网页,而且还不要小钱钱,这在种花家是坚决不允许滴。
notion前一阵的访问受限和近期的半死不活还不是因为同样的原因。
所以,在本地使用PowerBI Desktop创建报告和刷新报告时想要使用Onedrive personal必须科学上网;
而且如果使用世纪互联版的PowerBI账号,在云端刷新时同样需要科学上网,因为走的是国内的服务器;
但是如果使用的国际版PowerBI账号,那么在云端刷新时无需科学上网,因为服务器本身就在墙外。
而onedrive personal的客户端是可以访问的,因为客户端没有分享功能,只能自己玩。
而你看Onedrive for business虽然也能分享,但是只能在组织内分享,而且需要花点小钱钱,这个就可控了,所以不需要限制。
That’s all, thank you!