powerbi - 使用 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的限制还是我做错了什么???
解决方案
现在有一种用于此类任务的 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"
}
}
]
}
推荐阅读
- python - 使用 Python 分割/剪切 STL 文件
- python - Lambda 表达式:在 lambda 中引用 lambda
- sql - 直接从 Excel 中选择 AS400 查询记录
- python - 在 Python 2.7 中将异常转换为 unicode
- css - 使用 CSS 删除某个部分的填充
- javascript - jQuery 用 Trigger 调用 Change Event 只触发一次
- typescript - 如何在 Angular-Material 中对齐 mat-cell 中的文本
- mongodb-java-3.3.0 - 如何更新现有字段,Java中数组中嵌入的mongodb文档
- jenkins - Jenkins 失败构建:内部错误:未处理的带有性能插件的 kpi 类型
- javascript - Reactjs - 从 event.target 检索属性