具有刷新功能的Power BI数据源

时间:2015-07-23 14:59:44

标签: excel bearer-token powerbi powerquery

我正在尝试在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服务?

2 个答案:

答案 0 :(得分:1)

这就是我最终做的事情。

我的情景第一:

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

由于我无法直接从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上设置刷新。