要求:我正在寻找一种链接我的Power BI的方法,该方法使用数据湖作为基于环境的数据源。 我们希望将 Power BI 语义模型连接到基于环境(dev/staging/prod)的数据湖。应通过脚本在 CI/CD 管道中设置动态参数。对于数据湖 URL,这已经成功完成,但我正在努力使用服务原则设置访问密钥。
我做了什么:
我尝试直接使用带有密钥的 PowerBI API,但出现错误
$dataSourceCredentialsUrl = "https://api.powerbi.com/v1.0/myorg/groups/${workspaceId}/datasets/${datasetId}/Default.UpdateDatasources"
$dataSourceCredentials = @{
dataSourceConnections = @(
@{
connectionDetails = @{
url = "https://vtsonlinetestdatalake.dfs.core.windows.net"
}
credentialDetails = @{
credentialType = "Key"
credentials = @{
key = $clientSecret
}
privacyLevel = "None"
}
}
)
}
Invoke-RestMethod -Uri $dataSourceCredentialsUrl -Method Post -Body (ConvertTo-Json $dataSourceCredentials) -ContentType 'application/json' -Headers $headers
错误:“应用程序无法访问 API”。
实际上,我不想将密钥放在脚本中的某个位置,而是在带有参数的 M 查询中添加一些连接(在我的情况下也与数据湖 URL 一起使用),然后根据环境切换 Azure Key Vault。
有人有想法或更好的方法吗?
只是将此作为答案。
由于不支持
adls gen2
,因此需要使用此处提到的更新组中参数API调用。
这里是如何进行更新参数API调用的示例。
$body = @{
updateDetails = @(
@{
name = "ADLS_Connection"
newValue = "https://<prod_account>.dfs.core.windows.net/<prod_container>"
}
)
}
Invoke-RestMethod -Uri $apiUrl -Method POST -Body ($body | ConvertTo-Json -Depth 10) -Headers $headers -ContentType "application/json"
您需要在
name
中提供要更改的字段名称
以及 newValue
中的更新值。