PowerBI在线刷新遇到"动态数据源"报错?简单一步轻松避开

您看看需不需要 2024-03-07 08:04:13

之前分享过一个PowerBI通过高德API来查询地址的经纬度等信息的案例:

利用API,轻松获取任意地点的经纬度等详细信息

这个方法很简单,不过如果你发布这个报告到PowerBI服务中,并设置自动刷新时,很可能会遇到下面这个问题:

提示说这个数据集中有某个数据源不支持刷新,点击“发现数据源”,会看到更具体的提示:

此数据集包含一个动态数据源。由于 Power Bl 服务中不刷新动态数据源,因此不会刷新此数据集。

什么是动态数据源呢?

根据微软官方文档的介绍:动态数据源是这样一种数据源,其中的部分或所有信息在 Power Query 运行查询之后才能确定是否需要连接,因为数据是在代码中生成的或从其他数据源返回的。

看完这个解释以后,是不是仍然一头雾水呢?下面直接通过实例来说明这种情况并给出一种解决方案。

动态数据源主要会出现在下面几种情况:

SQL Server 数据库的实例名称和数据库;CSV 文件的路径;Web 服务的 URL

当上面的这些名称、路径或URL的文本中含有参数时,就会导致"动态数据源"问题。

前面文章通过API获取经纬度信息的案例,就是第三种情况,利用了 Web 服务的 URL,在自定义函数中,对URL设置了参数,静态的直接访问这个有参数的URL是无法访问的,所以导致了这种报错。

那么如何解决这个问题呢?不同的情况需要不同的解决方案,这里仍以调用高德API的情况为例,只需要稍微调整一下网址的写法就可以了。

选中自定义函数,打开高级编辑器:

之前在自定义函数的公式中,前面的部分是这样写的:

let 源 = (x) => let 源 = Xml.Tables( Web.Contents( "https://restapi.amap.com/v3/geocode/geo?address="&x&"&output=XML&key=你自己的key" ) ),//后面的公式省略……

上面 Web.Contents函数中的URL中是含有参数的,只需要将网址部分改成下面的形式:

let 源 = (x) => let 源 = Xml.Tables( Web.Contents( "https://restapi.amap.com/v3/geocode/geo", [ Query=[ address=x, output="XML", key="你自己的key" ] ] ) ),//后面的公式省略……

也就是将带参数的网址作为

Web.Contents函数的参数,改成利用Web.Contents函数的query选项,将网址中"?"后面的部分,分别用查询参数的形式来表达,并且保证Web.Contents函数第一个参数的网址是可访问的。

通过这样的调整以后,你再对这个报表设置计划刷新时,就不会再提示“动态数据源”的错误了。

当你遇到这种情况时,仔细对照上面两种写法,举一反三,对Web.Contents中的网址结构进行同样的处理,就能解决web URL动态数据源的问题了。

0 阅读:1

您看看需不需要

简介:感谢大家的关注