Power BI刷新避免使用网关,蚊子肉也是腿,电费也是钱
PowerBI从Onedrive文件夹中获取多个文件,依然不使用网关
有不少朋友表示很受用。上午和天行老师探讨的时候,就提出一个应用场景:
绕开网关,多人在各自电脑上协作更新onedrive数据源,而无需专门用一台不关机不断网的电脑来登录gateway进行刷新。
当然,一定还会有很多其他更需要这个功能的应用场景,等待我们一起去挖掘。
直接从onedrive获取文件或文件夹的思路非常好,不过,在配置的过程中,总会遇到各种各样的问题。
今天就来说一说在实现这一功能时可能会遇到的问题以及解决办法。
第一个:上文提到的“空表”问题
这个问题出现在从onedrive世纪互联中文版(http://sharepoint.cn)获取数据时,极大的概率会出现“此表为空”的问题(注意并不是错误,只是获取的数据为空),而国际版(http://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必须同属国际版或同属国内世纪互联版。