使用 API 自动化 Power BI 项目的部署管道
借助 Microsoft Power BI 部署管道工具,商业智能团队可以为其 Power BI 内容构建有效且可重复使用的发布过程。
注意
此处列出的部署管道 API 仅适用于 Power BI 项目。 有关 Fabric API,请参阅 Fabric API 文档。
为实现内容的持续集成和持续交付 (CI/CD),许多组织使用自动化工具,包括 Azure DevOps。 使用 Azure DevOps 的组织可以使用 Power BI 自动化工具扩展,该扩展支持许多部署管道 API 操作。
可使用部署管道 Power BI REST API 将 Fabric 集成到组织的自动化过程中。 下面是可以使用 API 完成的几个示例:
在整个过程中对管道进行管理,包括创建管道、在任何阶段分配工作区以及部署和删除管道。
在管道中分配和取消分配用户。
将 Fabric 集成到熟悉的 DevOps 工具中,如 Azure DevOps 或 GitHub Actions。
安排管道部署在特定时间自动进行。
同时部署多个管道。
根据管道部署来设置级联。 如果有跨管道连接的内容,则可以确保某些管道在其他管道之前部署。
先决条件
在使用部署管道 API 之前,请确保具备以下各项:
服务主体或调用 API 的用户需要管道和工作区权限以及对 Microsoft Entra 应用程序的访问权限。
如果要使用 PowerShell 脚本,请安装 Power BI PowerShell cmdlet Install-Module MicrosoftPowerBIMgmt。
部署管道 API 函数
利用部署管道 Power BI REST API 可实现以下功能:
获取管道信息 - 检索有关管道及其内容的信息。 获取管道信息将使你能够动态地生成部署 API 调用。 还可以查看部署的状态或部署历史记录。
部署 - REST 调用使开发人员可以使用 Fabric 服务中提供的任何类型的部署。
API 支持哪些部署类型?
这些 API 支持以下部署类型:
全部部署 - 单个 API 调用,可将工作区中的所有内容部署到管道中的下一阶段。 对于此操作,请使用全部部署 API。
选择性部署 - 仅在管道中部署特定项(例如报表或仪表板)。 对于此操作,请使用选择性部署 API。
向后部署 - 将新项部署到前一阶段。 仅当已部署的项在目标阶段中不存在时,向后部署才有效。 对于此操作,请使用全部部署或选择性部署 API,并将
isBackwardDeployment
设置为True
。更新应用 - 作为部署 API 调用的一部分,可以更新与该阶段相关的应用的内容。 在部署完成后,更新的项目对最终用户自动可用。 对于此操作,请使用全部部署或选择性部署 API 以及 PipelineUpdateAppSettings。
将管道与 Azure DevOps 集成
若要自动化 Azure DevOps 中的发布管道内的部署过程,可以使用以下方法之一:
PowerShell - 脚本使用服务主体或用户登录 Fabric。
Power BI 自动化工具 - 此扩展适用于服务主体或用户。
你还可使用其他 Power BI REST API 调用来完成相关操作,例如将 .pbix 导入管道、更新数据源和参数。
使用 Power BI 自动化工具扩展
Power BI 自动化工具扩展是一个开源 Azure DevOps 扩展,它提供一系列可在 Azure DevOps 中执行的部署管道操作。 该扩展无需使用 API 或脚本来管理管道。 每个操作可以单独用于执行一个简单的任务,例如创建管道。 可以组合使用操作在 Azure DevOps 管道中创建较复杂的方案,例如,创建管道、将工作区分配给管道、添加用户和部署。
将 Power BI 自动化工具扩展添加到 DevOps 后,需要创建服务连接。 以下连接可用:
服务主体(推荐)- 此连接使用服务主体进行身份验证,并需要使用 Microsoft Entra 应用的机密和应用程序 ID。 使用此选项时,请确认服务主体的服务管理员设置已启用。
用户名和密码 - 配置为具有用户名和密码的通用服务连接。 此连接方法不支持多重身份验证。 我们建议使用服务主体连接方法,因为它不需要将用户凭据存储在 Azure DevOps。
注意
Power BI 自动化工具扩展使用 Azure DevOps 服务连接来存储凭据。 有关更多信息,请参阅如何存储 Azure DevOps Services 的凭据。
为 Azure DevOps Power BI 自动化工具启用服务连接后,可以创建管道任务。 该扩展包括以下部署管道任务:
创建新管道
将工作区分配到管道阶段
将用户添加到部署管道
将用户添加到工作区
将内容部署到部署管道
已从部署管道中删除工作区
删除管道
访问 PowerShell 示例
可以通过下面的 PowerShell 脚本来了解如何执行多个自动化过程。 若要在 PowerShell 示例中查看或复制文本,请使用本部分中的链接。
还可以下载整个 PowerBI-Developer-Samples
GitHub 文件夹。
PowerShell 示例
本部分介绍从开发阶段到测试阶段部署语义模型、报表和仪表板的示例 PowerShell 脚本。 然后,该脚本会检查部署是否成功。
若要运行执行部署的 PowerShell 脚本,需要以下组件。 可以将以下任何部分添加到 Azure 管道阶段的任务中。
登录 - 在部署内容之前,你需要使用服务主体或用户登录到 Fabric。 使用 Connect-PowerBIServiceAccount 命令登录。
生成请求正文 - 在脚本的此部分中,指定要部署的项(例如报表和仪表板)。
$body = @{ sourceStageOrder = 0 # The order of the source stage. Development (0), Test (1). datasets = @( @{sourceId = "Insert your dataset ID here" } ) reports = @( @{sourceId = "Insert your report ID here" } ) dashboards = @( @{sourceId = "Insert your dashboard ID here" } ) options = @{ # Allows creating new item if needed on the Test stage workspace allowCreateArtifact = $TRUE # Allows overwriting existing item if needed on the Test stage workspace allowOverwriteArtifact = $TRUE } } | ConvertTo-Json
部署 - 在此处执行部署。
$url = "pipelines/{0}/Deploy" -f "Insert you pipeline ID here" $deployResult = Invoke-PowerBIRestMethod -Url $url -Method Post -Body $body | ConvertFrom-Json
(可选)部署完成通知 - 由于部署 API 是异步的,因此可编写脚本,以便在部署完成时收取通知。
$url = "pipelines/{0}/Operations/{1}" -f "Insert you pipeline ID here",$deployResult.id $operation = Invoke-PowerBIRestMethod -Url $url -Method Get | ConvertFrom-Json while($operation.Status -eq "NotStarted" -or $operation.Status -eq "Executing") { # Sleep for 5 seconds Start-Sleep -s 5 $operation = Invoke-PowerBIRestMethod -Url $url -Method Get | ConvertFrom-Json }
注意事项和限制
使用 API 的部署具有与部署管道用户界面相同的限制。
服务主体无法配置 OAuth 凭据。 部署新项目后,登录的服务主体将成为所有已部署的分页报表和语义模型的所有者。 在这种情况下,无法完成刷新。
不支持使用服务主体部署数据流。
单个部署中可部署的项数上限为 300。
部署管道 API 目前仅支持 Power BI 项。
目前仅支持通过 UI 创建 2-10 个阶段的自定义管道。