Мне было очень трудно перенести нашу старую рабочую область PowerBI (PowerBI Embedded v1) на версию 2 до даты устаревания. Я выполнил шаги здесь в Microsoft, чтобы помочь с миграцией, сначала используя их образец приложения, а затем их инструмент миграции.

Небольшая предыстория поможет разобраться во всем позже:

  • Наше приложение работает на MVC 5 .NET и Angular 1.5 (это важно, потому что существовала старая директива angular, позволяющая напрямую встраивать отчет в тег html, если вы передаете правильные настройки.)
  • 3 разные среды (тестирование, UAT, производство)
  • 3 разные базы данных SQL Azure в каждой среде (по 1 для каждого типа отчета)
  • 3 разных типа отчетов (A, B, C), но несколько версий одного отчета (A_v1, A_v2, A_v3 и т. д.). База данных SQL Azure.
  • Клиенты могут создавать свои собственные отчеты для каждого типа отчетов в нашем пользовательском интерфейсе.
  • Мы используем метод данных, принадлежащих приложению, когда у нас есть один пользователь PowerBI, который может получить доступ ко всем отчетам и фильтровать каждый отчет на основе InstanceId в наших базах данных SQL Azure. (InstanceId будут меняться в зависимости от отчета, который вызывает клиент).

Шаг 1. Настройте новый ресурс Azure и подписку (при необходимости)

Вы можете использовать приложение Power BI (рекомендуется) или создать новый ресурс с помощью портала Azure.

Для вашего каталога Azure потребуется подписка и группа ресурсов, чтобы вы могли использовать Pro-версию PowerBI. (Это только в том случае, если вы хотите использовать новый каталог)

Создайте нового пользователя для PowerBI в Active Directory и предоставьте ему доступ к ресурсу. (Этот пользователь будет использоваться всеми вашими приложениями для доступа к PowerBI).

Шаг 2. Настройте пользователей PowerBI Embedded

Перейдите в веб-приложение PowerBI и настройте PowerBI для вашего нового пользователя и любых других пользователей, которым вы хотите предоставить доступ к рабочим областям и отчетам для редактирования и т. д.

Если вы хотите, вы можете пойти дальше и создать соответствующие рабочие области для своих сред, но если вы выполняете миграцию, инструмент миграции сделает это за вас, а затем вы сможете переименовать рабочие области.

Шаг 3.Перенос старых отчетов.

Я следовал шагам из инструкций Microsoft Power BI. Я загрузил инструмент миграции и следовал инструкциям, чтобы получить предыдущие отчеты и создать рабочие области.

Когда вы впервые запускаете инструмент миграции и создаете новый план миграции, вам будет предложено войти в свою учетную запись Microsoft. Вы захотите войти в систему как администратор старой рабочей области PowerBI, чтобы иметь доступ ко всем старым рабочим областям и отчетам. Совет. Инструмент переноса кэширует имя пользователя и пароль, поэтому, если вы введете неправильный, вам придется перейти кC:\Users\Имя пользователя вашего ЦП\AppData\Local\MigrationSample и удалите файл user.config.

Далее вам нужно будет выбрать подписку и группу ресурсов, в которой находилась исходная рабочая область.

Нажмите «Анализ» в правом нижнем углу, чтобы подключить инструмент миграции к рабочим областям и отчетам в старом ресурсе рабочей области PowerBI.

Нажмите «Далее», чтобы перейти на следующую вкладку «Загрузить», которая покажет вам все текущие отчеты во всех рабочих областях.

Нажмите «Далее», чтобы перейти на вкладку «Создать группы». Здесь вы можете создавать различные рабочие области, к которым относятся отчеты. Вы можете создать выбранные группы или все группы в качестве рабочих пространств. Строка под CreateGroupId будет именем рабочей области в PowerBI. Позже его можно будет переименовать. Вам будет предложено войти в учетную запись Microsoft, связанную с новой рабочей областью PowerBI Embedded.

Затем перейдите на вкладку загрузки, и инструмент миграции загрузит каждый отчет в правильное рабочее пространство, которое было создано ранее. Опять же, здесь вы можете выбрать, какой отчет загрузить или загрузить их все. (С правой стороны есть раскрывающийся список, когда существует отчет с таким же именем, вы можете прервать слияние, игнорировать существующий отчет или перезаписать существующий.

Шаг 4.Подключите приложение к новой рабочей области.

Настройте свое приложение для подключения к новому приложению PowerBI Embedded v2. В файле Web.config под тегом ‹appSettings›‹/appSettings› вы можете добавить новые конфигурации.

clientId — это идентификатор приложения PowerBI Embedded в Azure Active Directory. clientId останется неизменным во всех средах, поэтому его можно будет сохранить в Azure или в файле секретов.

groupId — это идентификатор рабочей области PowerBI Embedded. Это будет меняться в зависимости от того, к какой рабочей области вы хотите получить доступ. Его можно найти в веб-приложении PowerBI по URL-адресу.

pbiUsername и pbiPassword также должны храниться в секретах.

Пакеты Nuget:обновите пакеты Nuget до версии 2.

Шаг 5 — Серверная часть:Код — получение EmbedToken из PowerBI

У вас будет некоторый существующий код для создания токена доступа из PowerBI и отправки его обратно в ваш интерфейс, чтобы директива powerbi могла его использовать и создать отчет. Если у вас есть несколько «отчетов» из одного шаблона отчета, вам сначала нужно будет получить идентификатор экземпляра или любой другой идентификационный идентификатор, который вы используете, чтобы отличать ваши отчеты от вашей базы данных sql.

Контроллер: я передаю идентификатор отчета нашему методу контроллера. Служба отчетов найдет

  • ReportId (имя типа отчета, например «EnergySavingsReport_v2»)
  • ReportTable (таблица данных для определенного типа отчета)
  • InstanceId (instanceId, по которому мы фильтруем)

Вспомогательный класс в нашем коде сгенерирует объект конфигурации, который будет передан во внешний интерфейс. Код для создания конфигурации можно найти в примере проекта PowerBI Embedded (приложение владеет данными) внутри метода HomeController-> EmbedReport. В нашем случае я разбил метод, чтобы он был немного более управляемым.

Шаг 6 — Внешний интерфейс:Код — Загрузка отчета в пользовательский интерфейс

Первоначально был модуль, который можно было загрузить с машинописным текстом, чтобы обслуживать отчеты в директиве. Однако модуль PowerBI-Angular устарел и не будет работать с новой версией PowerBI.

Чтобы получить новые элементы машинописного текста, мне пришлось использовать Bower для установки модуля powerbi-client. (Мне пришлось использовать Bower, потому что наше приложение поддерживает только версии до es5, поэтому установка npm не позволялаимпортировать модули).

После того, как вы установили модули, включите их в качестве тега скрипта в свой основной html-файл.

В контроллере Angular при инициализации мы вызываем службу данных Angular, чтобы получить данные для встраивания для конкретного отчета. Затем мы находим контейнер, в который мы хотим встроить отчет, который может вызвать:
this.powerbi.embed(container, embedData);

В службе данных мы должны манипулировать данными и создавать объект фильтра, используя имя таблицы и столбец, по которому мы хотим фильтровать. Более подробную фильтрацию можно найти здесь.