使用 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 DevOpsGitHub Actions

  • 安排管道部署在特定时间自动进行。

  • 同时部署多个管道。

  • 根据管道部署来设置级联。 如果有跨管道连接的内容,则可以确保某些管道在其他管道之前部署。

先决条件

在使用部署管道 API 之前,请确保具备以下各项:

部署管道 API 函数

利用部署管道 Power BI REST API 可实现以下功能:

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 管道阶段的任务中。

  1. 登录 - 在部署内容之前,你需要使用服务主体用户登录到 Fabric。 使用 Connect-PowerBIServiceAccount 命令登录。

  2. 生成请求正文 - 在脚本的此部分中,指定要部署的项(例如报表和仪表板)。

    $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
    
  3. 部署 - 在此处执行部署。

    $url = "pipelines/{0}/Deploy" -f "Insert you pipeline ID here"
    $deployResult = Invoke-PowerBIRestMethod -Url $url  -Method Post -Body $body | ConvertFrom-Json
    
  4. (可选)部署完成通知 - 由于部署 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 个阶段的自定义管道。