我使用powershell powerbi管理库和rest的混合来更新数据源。(如这里所记录的- https://learn.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasourcesingroup#datasourceconnectiondetails)
https://api.powerbi.com/v1.0/myorg/groups/{0}/datasets/{1}/Default.UpdateDatasources更新数据源。我将传入{0}的工作区id和{1}的dataset ID。
$datasets = Get-PowerBIDataset -WorkspaceId $workspaceObj.Id
foreach($dataset in $datasets)
{
$DatasetId = $dataset.Id.Guid
$json =
@'
{{
"updateDetails": [{{
"datasourceSelector": {{
"datasourceType": "AnalysisServices",
"connectionDetails": {{
"server": "{0}",
"database": "{1}"
}}
}},
"connectionDetails": {{
"server": "{0}",
"database": "{1}"
}}
}}
]
}}
'@
$json = [string]::Format($json, $AasServer, $modelName)
$apiDatasetUrl = [string]::Format('https://api.powerbi.com/v1.0/myorg/groups/{0}/datasets/{1}/Default.UpdateDatasources',$workspaceObj.Id , $DatasetId)
Invoke-RestMethod -Headers $headers -Method 'Post' -Body $json -Uri $apiDatasetUrl -ContentType 'application/json'
}这将导致404错误:
找不到Dataset {guid}
我做错了什么?当guid来自Power时,我无法理解如何找不到数据集。
我也尝试过将"datasourceId“和"gatewayId”包含在json体内,但这没有效果。
发布于 2019-10-29 14:49:03
这个错误实际上发生在我的JSON中,第一个connectionDetails是现有数据源的精确规范。第二个connectionDetails包含要更新的详细信息。更正见下文(大写)
$json =
@'
{{
"updateDetails": [{{
"datasourceSelector": {{
"datasourceType": "AnalysisServices",
"connectionDetails": {{
"server": "MY-OLD-SERVER-NAME",
"database": "MY-OLD-MODEL-NAME"
}},
"datasourceId": "{2}",
"gatewayId": "{3}"
}},
"connectionDetails": {{
"server": "{0}",
"database": "{1}"
}}
}}
]
}}发布于 2019-10-23 10:02:38
您正在使用数据集-获取数据源
$getUrl = [string]::Format('https://api.powerbi.com/v1.0/myorg/datasets/{0}/datasources',$DatasetId)虽然(因为您从某个工作区$datasets = Get-PowerBIDataset -WorkspaceId $workspaceObj.Id获取数据集),您应该使用数据集-获取组中的数据源,端点URL应该如下所示:
https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/datasources也就是说,您还必须提供组(工作区) ID。
发布于 2019-10-29 12:34:40
我做了一个类似的项目( project + rest),并遇到了与您类似的问题。
您如何连接到API?通过使用服务主体,您只能使用您可以进行的api调用(MS没有很好地记录这种调用)。
在我看来,"404 not“似乎没有授权您对数据集进行更改。您可以尝试以用户身份使用login登录,并查看是否得到了不同的响应。
您最好的调试选项是:运行cmdlet 解决-PowerBIError -Last以获得有关错误的更多细节,或者使用Fiddler这样的工具来查看API的响应。
https://stackoverflow.com/questions/58518997
复制相似问题