PowerBI如何从Onedrive获取文件

绕开网关,多人在各自电脑上协作更新onedrive数据源,而无需专门用一台不关机不断网的电脑来登录gateway进行刷新。

当然,一定还会有很多其他更需要这个功能的应用场景,等待我们一起去挖掘。

直接从onedrive获取文件或文件夹的思路非常好,不过,在配置的过程中,总会遇到各种各样的问题。

今天就来说一说在实现这一功能时可能会遇到的问题以及解决办法。

第一个:上文提到的“空表”问题

这个问题出现在从onedrive世纪互联版(sharepoint.cn)获取数据时,极大的概率会出现“此表为空”的问题(注意并不是错误,只是获取的数据为空),而国际版(sharepoint.com)则不会出现这个问题:

这是怎么回事呢?

原因就在SharePoint.Contents的说明中:

APIversion作为SharePoint.Contents函数的可选参数,有三个值:14,15,“auto”。

当没有添加这个参数时,参数默认是14。如果添加的是“auto”,那么参数将自动在后台识别为14或15。

后面有一句重点的,如果要从非英语的SharePoint网站获取数据,APIversion应当选择15。非英语的网站,个人理解,意思应该是非“.com”后缀的onedrive,

所以世纪互联版的onedrive应当设置APIversion为auto或者15,个人建议选择auto。

这样就可以正确地从国内的onedrive中获取数据了:

第二个:路径问题

请记住,路径一定是根目录,而不是直接子目录,否则会出错的。以下就是多了子目录而返回错误

第三个:本地配置问题

在Power BI刷新避免使用网关,蚊子肉也是腿,电费也是钱中,我们提到过,本地编辑权限要在组织账户中登录onedrive的账号:

而获取onedrive的文件夹,我们需要在Microsoft账户中进行登录:

简单说一下这两者的不同:

获取一个文件我们用的是Web.Contents函数,本质上它只是一个网络链接,跟其他任何需要登录的网络链接没有任何区别,因此权限标题是“访问Web内容”,需要登录“组织账户”;

而从文件夹获取数据,我们使用的是SharePoint.Contents函数,这明显是微软自家孩子,所以标题是“SharePoint”,自然需要登录的是“Microsoft账户”。

第四个:云端配置问题

发布到云端,身份验证的方法选择需要留言,选择OAuth2的认证方式,隐私级别设为组织:

然后就可以无需网关进行刷新了。以下是刚刚进行的刷新:

第五个:云端配置问题2

在编辑数据源凭据时,严格按照以上步骤进行,你还是会有一定概率遇到的错误:

咱也没看懂到底啥原因,按照上面的操作也整不明白。

为什么说是一定概率出现呢?因为我昨晚测试的时候没遇到,而天行老师今天却遇到了。

这问题我想了很长时间没有想明白,晚上忽然想到:

我测试的是世纪互联的Power BI和互联的onedrive,天行老师测试的是世纪互联版Power BI和国际版onedrive。

我马上用世纪互联的Power BI去获取国际版的onedrive文件夹,果然也出问题了。然后又用国际版Power BI去获取世纪互联的onedrive文件夹,同样也出现了问题。

而同时使用国际版的Power BI和onedrive就不会。

那么问题就很明显了:

在本地,因为Power BI Desktop不分国内国际版,所以获取onedrive文件没有任何区别,都可以获取和刷新。但是一旦使用云端,Power BI服务器国内国外是不同的,onedrive也是不同的,两者是处于隔离的状态。

因此,无法使用世纪互联版Power BI去获取国际版的onedrive文件夹,反之亦然。

我估计,这个问题和上面提到的APIversion有一定的关系,虽然不论用三个参数中的哪一个,测试结果都是相同的。这个有待后续研究研究解决。

结论

当你的报告需要多人协作维护数据源,又不想占用一台共享电脑来刷新时,你可以采用多人登录OneDrive for business进行协作,用Power BI直接获取OneDrive云端文件并随时刷新的方式,而无需通过本地的gateway来实现。

注意Power BI service和OneDrive必须同属国际版或同属国内世纪互联版。

About the Author

You may also like these