Прочитать на английском

Поделиться через


Автоматизация конвейера развертывания для элементов Power BI с помощью API

Средство конвейеров развертывания Microsoft Power BI позволяет группам бизнес-аналитики создавать эффективный и повторно используемый процесс выпуска для содержимого Power BI.

Примечание

API конвейеров развертывания, перечисленные здесь, применяются только к элементам Power BI. Сведения об API Fabric см. в документации по API Fabric.

Для обеспечения непрерывной интеграции и непрерывной доставки содержимого (CI/CD) многие организации используют средства автоматизации, включая Azure DevOps. Организации, использующие Azure DevOps, могут использовать расширение средств автоматизации Power BI, которое поддерживает многие операции API конвейеров развертывания.

Вы можете использовать конвейеры развертывания REST API Power BI для интеграции Fabric в процесс автоматизации организации. Ниже приведены несколько примеров того, что можно сделать с помощью API:

  • Управление конвейерами от начала до завершения, включая создание конвейера, назначение рабочей области любому этапу и развертывание и удаление конвейера.

  • Назначение и отмена назначения пользователей конвейеру и их отмена.

  • Интеграция Fabric в знакомые средства DevOps, такие как Azure DevOps или GitHub Actions.

  • Планирование развертываний конвейеров выполняется автоматически в определенное время.

  • Разверните несколько конвейеров одновременно.

  • Каскад в зависимости от развертываний конвейеров. Если у вас есть содержимое, подключенное к конвейерам, можно убедиться, что некоторые конвейеры развертываются перед другими.

Необходимые компоненты

Прежде чем использовать API конвейеров развертывания, убедитесь, что у вас есть следующее:

  • Субъект-служба или пользователь, вызывающий API, нуждается в разрешениях конвейера и рабочей области и доступе к приложению Microsoft Entra.

  • Если вы собираетесь использовать сценарии PowerShell, установите командлеты Power BI PowerShell Install-Module MicrosoftPowerBIMgmt.

Функции API конвейеров развертывания

Конвейеры развертывания REST API Power BI позволяют выполнять следующие функции:

  • Получение сведений о конвейере— получение сведений о конвейерах и их содержимом. Получение сведений о конвейере позволяет динамически создавать вызовы API развертывания. Вы также можете проверить состояние развертывания или журнала развертывания.

  • Развертывание — вызовы REST позволяют разработчикам использовать любой тип развертывания, доступный в службе Fabric.

  • Создание и удаление конвейеров— использование конвейера создания и удаления конвейера для выполнения этих операций.

  • Управление рабочими областями. С помощью назначения рабочей области и рабочей области Unassign можно назначать и отменять назначение рабочих областей определенным этапам конвейера.

  • Управление пользователями - конвейера Удаление пользователя конвейера позволяет удалить пользователя из конвейера. Обновление пользователя конвейера позволяет добавить пользователя в конвейер.

Какие типы развертывания поддерживают API?

API поддерживают следующие типы развертывания:

  • Развертывание всех — один вызов API, который развертывает все содержимое в рабочей области на следующем этапе в конвейере. Для этой операции используйте все API развертывания.

  • Выборочное развертывание — развертывает только определенные элементы, такие как отчеты или панели мониторинга, в конвейере. Для этой операции используйте API выборочного развертывания .

  • Обратное развертывание — развертывает новые элементы на предыдущем этапе. Обратное развертывание работает только в том случае, если развернутые элементы еще не существуют на целевом этапе. Для этой операции используйте api развертывания всех или выборочного развертывания с isBackwardDeployment заданным значением True.

  • Обновление приложения — в рамках вызова API развертывания можно обновить содержимое приложения, связанного с этим этапом. Обновленные элементы автоматически доступны конечным пользователям после завершения развертывания. Для этой операции используйте api развертывания всех или выборочного развертывания с помощью PipelineUpdateAppSettings.

Интеграция конвейера с Azure DevOps

Чтобы автоматизировать процессы развертывания из конвейера выпуска в Azure DevOps, используйте один из следующих методов:

  • PowerShell — сценарий входит в Fabric с помощью субъекта-службы или пользователя.

  • Средства автоматизации Power BI. Это расширение работает с субъектом-службой или пользователем.

Вы также можете использовать другие вызовы REST API Power BI для выполнения связанных операций, таких как импорт PBIX в конвейер, обновление источников данных и параметров.

Использование расширения средств автоматизации Power BI

Расширение средств автоматизации Power BI — это расширение открытый код расширения Azure DevOps, которое предоставляет ряд операций конвейеров развертывания, которые можно выполнять в Azure DevOps. Расширение устраняет необходимость в API или скриптах для управления конвейерами. Каждую операцию можно использовать по отдельности для выполнения задачи, например создания конвейера. Операции можно использовать вместе в конвейере Azure DevOps для создания более сложного сценария, например создания конвейера, назначения рабочей области конвейеру, добавления пользователей и развертывания.

После добавления расширения средств автоматизации Power BI в DevOps необходимо создать подключение к службе. Доступны следующие подключения:

  • Субъект-служба (рекомендуется) — это подключение проходит проверку подлинности с помощью субъекта-службы и требует секрета приложения Microsoft Entra и идентификатора приложения. При использовании этого параметра убедитесь, что параметры администратора службы для субъекта-службы включены.

  • Имя пользователя и пароль — настроено в качестве универсального подключения к службе с именем пользователя и паролем. Этот метод подключения не поддерживает многофакторную проверку подлинности. Рекомендуется использовать метод подключения субъекта-службы, так как он не требует хранения учетных данных пользователя в 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.

  • Создание настраиваемого конвейера из 2–10 этапов в настоящее время поддерживается только через пользовательский интерфейс.