首页 > 解决方案 > 使用 Rest API 更改报告/数据集以使用不同的本地企业网关

问题描述

我在 PowerBi 桌面中开发了一个 PowerBI 报告,它从本地分析服务器中获取数据。

  在 PowerBi 服务中,我创建了一个工作区,然后我安装了一个本地(企业)网关,其数据源指向同一个分析服务器,然后我从 powerbi desktop 发布我的报告,然后它发布到工作区和它自动连接到网关,一切正常。

我想将此 pbix 文件上传到具有不同网关和指向我们的生产分析服务器的数据源的生产工作区。

所以我正在做以下事情:

使用 powerbi powershell commandlet 将 Pbix 上传到生产工作区:New-PowerBIReport 这很好,当然它没有连接到任何预期的东西。

然后,我尝试使用此 REST API 调用为报告切换数据集上的网关  

https://docs.microsoft.com/en-us/rest/api/power-bi/datasets/bindtogatewayingroup  

指定我希望它绑定到的 GatewayID 和生产分析服务器的 Datasource Id。  

然后返回一条错误消息:DMTS_CanNotFindMatchingDatasourceInGatewayError  

哪种有意义,因为报告将查看开发分析服务器,并且不会在 prod 网关上配置。

 

所以我想我想知道是否可以使用 API 更改报告中的内容,我可以使用:   https ://docs.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasourcesingroup  

因此,使用它我可以将数据库名称和服务器从开发更改为生产,并验证服务是否已接受此更改。  

然后我想我可以调用 bindtogatewayingroup 并指定我的生产网关和生产数据源,但它仍然失败并显示相同的消息“DMTS_CanNotFindMatchingDatasourceInGatewayError”

经过数小时的研究,我得出的结论是,不可能将报告从一个网关更改到另一个网关,除非两个网关上存在完全相同的数据源,这似乎有点毫无意义。

这是API的限制还是我做错了什么???

标签: powerbi

解决方案


现在有一种用于此类任务的 API 方法,允许更改通过数据网关与分析服务建立实时连接的需求: https ://docs.microsoft.com/en-us/rest/api/power-bi/datasets /updatedatasourcesingroup#updatedatasourceconnectionrequest

用这样的身体调用它:

{
  "updateDetails": [
    {
      "datasourceSelector": {
        "datasourceType": "AnalysisServices",
        "connectionDetails": {
          "server": "server name mentioned in your pbix file",
          "database": "original database name used in pbix"
        }
      },
      "connectionDetails": {
        "server": "a new server name that is used on the gateway",
        "database": "potentially, another database name"
      }
    }
  ]
}

推荐阅读