2

我正在尝试在 Power BI 中设置一个可以根据需要刷新或计划刷新的数据集。

我正在上传一个带有电源查询的 Excel 工作簿。

电源查询正在连接到复制服务以通过服务获取数据。查询如下所示:

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 操作,因此在Web.ContentsOptions 参数中使用 Content 字段。通过承载令牌进行身份验证。

数据源设置为匿名凭据,隐私级别设置为无。

这工作正常,我能够检索结果,甚至刷新工作簿中的表格。

一旦我将它上传到 PowerBI 并尝试刷新新创建的数据集,它会说:

您还不能刷新,因为您需要为数据集中的数据源提供有效凭据。

所以我去管理数据源。单击编辑凭据。选择“匿名”身份验证方法并单击登录,它显示“登录失败”。

为什么呢?当我上传 Excel 工作簿时,标题似乎丢失了。我怎样才能做到这一点?是否有其他方法可以设置可以刷新的数据集 - 源是 Web 服务?

4

2 回答 2

1

这就是我最终做的事情。

我的场景首先:

  • 我的请求是 POST
  • 身份验证是通过需要通过请求标头传递的不记名令牌进行的。这是我试图调用的复制服务的要求,我无法更改
  • 在 PowerBI 中创建的数据集需要是可刷新的。

因为我不能让它直接从 PowerBI 内部工作,所以我引入了一个中间层。这将解释来自 PowerBI 的 GET 请求。处理来自查询字符串的令牌。接受服务和操作也作为查询字符串参数。然后它会创建对真实服务的 POST 请求(在我的例子中是复制服务)。服务名称和操作名称也是从请求 URL 中提取的。令牌作为请求标头的一部分被推送

所以来自 PowerBI 的请求看起来像 PowerBI 需要的,即

Web.Contents("https://intermediatelayer.com?access_token="*validtoken*"&ServiceName="ClientService"&Operation="GetActiveClients"")

不是一个理想的解决方案,但有效。

于 2015-07-29T11:54:36.157 回答
0

就像您建议的那样,管理数据源正在使用对 URL 的 GET 请求验证匿名凭据,而没有硬编码的标头。基本上是在运行

Web.Contents("https://na2.replicon.com/services/ClientService1.svc/GetActiveClients")

失败并显示“(405):不允许方法”,因此管理数据源认为凭据错误。

如果没有对上述 M 做出成功响应的服务回复,我看不到任何方法可以在此混搭上设置刷新。

于 2015-07-24T20:17:39.963 回答