powerbi - 如何计划刷新 Web.Contents 数据源?
问题描述
我正在尝试在 Power BI Web 应用 ( https://app.powerbi.com ) 中的数据集上设置“计划刷新”。
通常我应该在数据集设置中看到这些选项:
但是当我进入设置时,我会收到这个警告:
并且无法选择“网关连接”或数据源设置。
我发现了一篇有用的文章,它解释了 Web.Contents 的问题以及如何解决它:
我应用了这个,它仍然不起作用。
在 Power BI Desktop 中,没有列出任何数据源,因为我使用的是手工编写的查询。它的工作方式是有一个主查询(Log Scroll),它调用一个递归函数查询(RecursiveFetch)。然后,该函数调用一个 Web API,该 API 每次调用时都会发送一个新的 JSON 数据页面,以一种“滚动”的方式。
日志滚动查询如下所示:
let
url = "http://exampleURL:1000"
Source = RecursiveFetch(url, 5, null, null)
in
Source
RecursiveFetch看起来像这样:
let
RecursiveFetch= (url, scrollCount, scrollID, counter) =>
let
Counter = if (counter = null) then 0 else counter,
Results = if (scrollID = null) then
Json.Document(Web.Contents(url,
[
Headers=[
#"Authorization"="Basic <key here>",
#"Content-Type"="application/json"
]
]
))
else
Json.Document(Web.Contents(url,
[
Content = Text.ToBinary(scrollID),
Headers=[
#"Authorization"="Basic <key here>",
#"Content-Type"="application/json"
]
]
)),
ParsedResults = Table.FromList(Results[hits][hits], Splitter.SplitByNothing(), null, null, ExtraValues.Error),
Return = if (Counter < scrollCount) then
ParsedResults & RecursiveFetch(url, scrollCount scrollID, Counter)
else
ParsedResults
in
Return
in
RecursiveFetch
这一切都在 Power BI Desktop 中完美运行,但是当我将其发布到 Web 应用程序时,我得到了上面显示的错误。
我已经在我的网关集群中手动设置了一个数据源,该数据源使用手动创建的查询使用的相同凭据很好地连接到 URL。
我如何让这一切正常工作?有什么我错过的吗?
解决方案
这一切都在 Power BI Desktop 中完美运行,但是当我将其发布到 Web 应用程序时,我得到了上面显示的错误。
要解决这个问题,Web.Contents
需要使用options[RelativePath]
和options[Query]
(或Content
用于 HTTP POST)
原本的:
"https://data.gov.uk/api/3/action/package_search?q=" & Term
将使用:
let
BaseUrl = "https://data.gov.uk",
Options = [
RelativePath = "/api/3/action/package_search",
Headers = [
Accept="application/json"
],
Query = [
q = Term
]
],
// wrap 'Response' in 'Binary.Buffer' if you are using it multiple times
response = Web.Contents(BaseUrl, Options),
buffered = Binary.Buffer(response),
response_metadata = Value.Metadata(response),
status_code = response_metadata[Response.Status],
from_json = Json.Document(final_result)
in
from_json
该参数url
将是可能的最小 url,否则服务会认为您的动态请求实际上没有改变——导致原始刷新错误。
推荐阅读
- reactjs - 覆盖不适用于反应大日历
- rust - Rust:参数要求借用持续为“静态”
- c - BoF 返回地址覆盖 \x0A 和 \x00 的问题
- javascript - Initializing 2D and 3D array in JavaScript
- python - python pandas for循环将值添加到新列
- python - 如何在 VS Code 中设置 Python 交互窗口的导入路径?
- jquery-ui - 在两个列表之间拖放(列表 2 仅具有排序)
- paypal - 自定义收款人的 PayPal 退款权限
- reactjs - 有时在我重新加载时对 Web 应用程序空白页做出反应,当我进行更改并再次重新加载时它又回来了,相同的周期
- mysql - 从 MS SQL Server 2014 导入/导出向导导出到 MySQL 时出错