我正在尝试在Power BI中设置一个数据集,可以根据需要刷新或计划刷新。
我正在上传一个有电源查询的excel工作簿。
电源查询连接到Replicon Service以通过服务获取数据。查询如下所示:
Source = Web.Contents(
"https://na2.replicon.com/services/ClientService1.svc/GetActiveClients",
[
Headers=
[
#"Authorization"="Bearer *ValidToken*",
#"Accept"="application/json",
#"Content-Type"="application/json"
],
Content=Text.ToBinary("{}")
]
)
请求是POST操作,因此Content字段用于Web.Contents
Options参数。身份验证是通过承载令牌。
数据源设置为匿名凭据,隐私级别设置为无。
这很好用,我可以在工作簿中检索结果甚至刷新表单。
一旦我将其上传到PowerBI并尝试刷新新创建的数据集,它就会说:
您无法刷新,因为您需要为数据集中的数据源提供有效凭据。
所以我去管理数据源。单击“编辑凭据”。选择“匿名”身份验证方法,然后单击“登录”并显示“登录失败”。
为什么会这样?当我上传Excel工作簿时,似乎丢失了标题。我怎么能做到这一点?有没有其他方法可以设置可以刷新的数据集 - 源是一个Web服务?
答案 0 :(得分:1)
这就是我最终做的事情。
我的情景第一:
由于我无法直接从PowerBI内部开始工作,因此我引入了一个中间层。这将解释来自PowerBI的GET请求。处理来自查询字符串的令牌。接受服务和操作也作为查询字符串参数。然后它会创建对Real Service的POST请求(在我的情况下是复制服务)。服务名称和操作名称也从请求URL中获取。令牌被推送为请求标头
的一部分所以来自PowerBI的请求看起来像PowerBI所需,即
Web.Contents("https://intermediatelayer.com?access_token="*validtoken*"&ServiceName="ClientService"&Operation="GetActiveClients"")
不是理想的解决方案,但有效。
答案 1 :(得分:0)
管理数据源正在验证带有GET请求的匿名凭据,而不使用硬编码标头,就像您建议的那样。它基本上正在运行
Web.Contents("https://na2.replicon.com/services/ClientService1.svc/GetActiveClients")
因“(405):方法不允许”而失败,因此管理数据源认为凭据错误。
如果没有通过上述M的成功响应进行服务回复,我认为没有办法在这个mashup上设置刷新。