Встраивание отчета Power BI в основную форму приложения на основе модели
Можно использовать отчеты Power BI в приложениях на основе модели Power Apps, чтобы обеспечить широкие возможности отчетности и аналитики в основных формах и позволить пользователям добиваться лучших результатов. Это разблокирует возможность агрегирования данных между системами и их настройки вплоть до контекста одной записи.
Необходимые компоненты
Внедрение содержимого Power BI — это необязательная функция, которая по умолчанию отключена во всех средах. Необходимо включить ее, прежде чем можно будет внедрять содержимое Power BI. Дополнительные сведения: Включение визуализации Power BI в организации.
Эта функция требует экспортировать решение, изменить его для добавления фрагмента xml, а затем импортировать обратно в среду. Обязательно импортируйте изменения в целевую среду только через управляемое решение. См. раздел Импорт, обновление и экспорт решений для получения инструкций по установке обновления существующего управляемого решения.
Внедрение без контекстной фильтрации
Можно использовать отчеты Power BI, внедряя их, и получать точно такой же отчет. Это не предполагает их контекстную настройку для текущей формы на основе модели, поэтому вы получаете одинаковый отчет для всех записей таблицы. Например, в следующем отчет отображается географическое расположение всех организаций сразу, что удобно для отображения сводной информации.
Вы можете настроить код XML узла sections
основной формы, чтобы в нем можно было разместить встроенный отчет и плитку Power BI, выполнив следующие действия:
В своей среде разработки создайте решение и добавьте таблицу, содержащую основную форму, в которую вы хотите встроить отчет Power BI для отображения.
- Если таблица уже существует в целевой среде, куда вы импортируете решение, выберите вариант Выбрать компоненты при добавлении таблицы в решение. Затем добавьте только основную форму таблицы.
- Если таблица не существует в целевой среде, куда вы импортируете решение, выберите вариант Включить все компоненты при добавлении таблицы в решение.
Экспортируйте решение как управляемое.
Распакуйте все файлы из zip-архиве пакета решения. Затем отредактируйте файл customizations.xml и добавьте приведенный ниже XML-код в блок
<sections>
, который находится внутри узла<forms type="main">
в файле customizations.xml.
<section id="{d411658c-7450-e1e3-bc80-07021a04bcc2}" locklevel="0" showlabel="true" IsUserDefined="0" name="tab_4_section_1" labelwidth="115" columns="1" layout="varwidth" showbar="false">
<labels>
<label languagecode="1033" description="Unfiltered Power BI embedding demo"/>
</labels>
<rows>
<row>
<cell id="{7d18b61c-c588-136c-aee7-03e5e74a09a1}" showlabel="true" rowspan="20" colspan="1" auto="false" solutionaction="Added">
<labels>
<label languagecode="1033" description="Accounts (Parent Account)"/>
</labels>
<control id="unfilteredreport" classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}">
<parameters>
<PowerBIGroupId>00000000-0000-0000-0000-000000000000</PowerBIGroupId>
<PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
<TileUrl>https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081</TileUrl>
</parameters>
</control>
</cell>
</row>
<row/>
</rows>
</section>
Важно!
Необходимо использовать элемент управления classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}"
, как указано в примере XML.
- Внесите следующие изменения в XML-код формы, который вы скопировали в файл customizations.xml для своего отчета Power BI. В этой таблице описаны значения, которые необходимо изменить для элементов в предыдущем примере XML-кода.
Свойство | Описание: |
---|---|
PowerBIGroupId | Идентификатор рабочей области Power BI. Если ваш отчет находится в рабочей области "Моя рабочая область",** то идентификатор рабочей области будет 00000000-0000-0000-0000-000000000000. В противном случае укажите идентификатор рабочей области. Узнать свой идентификатор рабочей области можно из URL-адреса службы Power BI. Больше информации: Поиск идентификаторов рабочей области и отчета Power BI. |
PowerBIReportId | Идентификатор отчета Power BI. Замените его отчетом, который требуется внедрить. Узнать идентификатор отчета можно из URL-адреса службы Power BI. Больше информации: Поиск идентификаторов рабочей области и отчета Power BI |
TileUrl | URL-адрес отчета Power BI, который требуется внедрить. Необходимо использовать правильное имя субдомена Power BI (может потребоваться заменить app.powerbi.com вашим собственным) и идентификатор отчета (замените reportId=544c4162-6773-4944-900c-abfd075f6081 вашим собственным). Например: https://app.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081 . |
solutionaction="Added" | Если таблица уже существует в целевой среде, оставьте параметр solutionaction=Added для элемента ячейки таким, как указано в примере XML-кода. Если таблица не существует в целевой среде, удалите параметр solutionaction=Added . |
- Создайте zip-файл из всех ранее извлеченных файлов решения. Затем импортируйте решение в целевую среду.
Внедрение с контекстной фильтрацией
Можно сделать отчеты Power BI более полезными, применив контекстные фильтры к текущей управляемой моделью форме, чтобы фильтровать отчет на основе атрибутов текущей строки. Например, следующий отчет показывает географическое расположение организации путем фильтрации отчета Power BI с помощью названия организации. Это позволяет в одном отчете отображать контекстную информацию для всех строк таблицы.
Фильтрация выполняется добавлением элемента <PowerBIFilter>
в блок <parameter>
, как показано ниже. Можно использовать любой атрибут таблицы формы для формирования выражения фильтра. Дополнительные сведения: Конструирование фильтров, чтобы понять, как создавать собственные фильтры.
<control id="filteredreport" classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}">
<parameters>
<PowerBIGroupId>00000000-0000-0000-0000-000000000000</PowerBIGroupId>
<PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
<TileUrl>https://xyz.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081</TileUrl>
<PowerBIFilter>{"Filter": "[{\"$schema\":\"basic\",\"target\":{\"table\":\"table_name_of_power_bi_dataset\",\"column\":\"power_bi_field\"},\"operator\":\"In\",\"values\":[$a],\"filterType\":1}]", "Alias": {"$a": "field_name_in_powerapps_to_filter"}}</PowerBIFilter>
</parameters>
</control>
Обратите внимание, что при этом используется тот же элемент управления, что и при внедрении нефильтрованного отчета, поэтому идентификатор класса элемента управления остался неизменным.
В этой таблице описываются все дополнительные свойства, используемые в предыдущем примере XML-кода.
Свойство | Описание |
---|---|
PowerBIFilter | Выражение фильтра, которое задает контекст отчета Power BI, передавая атрибуты формы в виде параметров. Чтобы сделать его более читаемым, фильтр формируется, как показано ниже. Выражение фильтра не может быть списком значений, разделенных запятыми. |
{
"Filter": "[{
\"$schema\":\"basic\",
\"target\":{
\"table\":\"table_name_of_power_bi_dataset\",
\"column\":\"power_bi_field\"
},
\"operator\":\"In\",
\"values\":[$a, $b],
\"filterType\":1
}]",
"Alias": {
"$a": "field1_name_in_powerapps_to_filter",
"$b":"field2_name_in_powerapps_to_filter"
}
}
Целевая часть предыдущего выражения определяет таблицу и столбец для применения фильтров. Оператор определяет логику, а значения определяют данные, передаваемые из управляемого моделью приложения Power Apps. Чтобы выполнить параметризацию общим способом, значения формируются с помощью псевдонимов. В предыдущем выражении передаются значения firstname и lastname организации, и любое из них ищется в столбце Название организации в отчете Power BI. Обратите внимание, что firstname и lastname являются уникальными именами атрибутов таблицы организации, значения которых будут переданы здесь.
Можно создать более сложные выражения фильтра, ознакомившись с примерами из раздела Формирование фильтров и указав соответствующие значения для параметров $schema и filterType. Обязательно добавляйте к каждому литералу в части фильтрации символ ", чтобы JSON создавался правильно.
Удаление атрибута unmodified перед импортом
Перед тем как импортировать решение в целевую среду, убедитесь, что атрибут unmodified не включен в раздел formXml файла customizations.xml. Если атрибут unmodified присутствует в XML, который включает XML элемента управления Power BI, удалите этот атрибут, прежде чем импортировать решение в целевую среду. Например, замените <systemform unmodified="1">
на <systemform>
.
Поиск идентификаторов рабочей области и отчета Power BI
- Идентификатор рабочей области для этого примера: efc85277-2bdb-47bc-9762-363f64335108.
- Идентификатор отчета для этого примера: 643ab643-7126-4a57-bd82-ca8f1fb676fc.
Известные проблемы и ограничения
Эта интеграция доступна только в клиенте единого интерфейса в поддерживаемых веб-браузерах и на мобильных устройствах.
При открытии этой формы в конструкторе форм Power Apps этот элемент управления не будет отображаться должным образом. Это связано с тем, что элемент управления был настроен вне конструктора форм.
Пользователи будут проходить проверку подлинности в Power BI автоматически со своим именем пользователя и паролем Power Apps. Если учетная запись Power BI с соответствующими учетными данными не существует, отображается приглашение для входа, как показано ниже.
Никакие данные не отображаются, если неправильная организации используется для входа в Power BI. Чтобы выполнить вход с использованием правильных учетных данных, выйдите, затем выполните вход снова.
Вид данных отчета, отображаемого в Power Apps, такой же, как вид в Power BI, и роли безопасности и прав Power Apps не влияют на отображаемые данные. Следовательно, данные в целом те же, что и те, которые увидел бы создатель набора данных Power BI. Для применения ограничений доступа к данным, аналогичных ролям безопасности и группам Power Apps, используйте Безопасность на уровне строки (RLS) с помощью Power BI.
Если форма не отображает отчет Power BI после импорта решения и публикации настроек, откройте его в редакторе управляемых моделью форм и сохраните его, чтобы JSON формы был сформирован заново.
Встраивание плитки Power BI в форму поддерживается только без контекстной фильтрации.
Внедрение отчета Power BI не поддерживает ссылки между клиентами. Например, попытка внедрить отчет Power BI, принадлежащий клиенту Contoso, в приложение на основе модели, принадлежащее клиенту Fabrikam, в настоящее время не поддерживается, даже если внедряемый отчет был доступен пользователям в клиента Fabrikam через Power BI.
Закрепленные отчеты в составе панелей мониторинга Power BI не предназначены для интерактивного использования. Если вам нужны интерактивные отчеты Power BI, встраивайте их напрямую, а не закрепляйте на панели мониторинга.
Типичные проблемы
- ИД группы не указан в узле
TileUrl
параметров управления, когда это может потребоваться. Этот пример включает идентификатор группы.
<parameters>
<PowerBIGroupId>fd266a4c-9a02-4553-9310-80e05ee844f3</PowerBIGroupId>
<PowerBIReportId>544c4162-6773-4944-900c-abfd075f6081</PowerBIReportId>
<TileUrl>https://xyz.powerbi.com/reportEmbed?reportId=544c4162-6773-4944-900c-abfd075f6081&groupId=fd266a4c-9a02-4553-9310-80e05ee844f3</TileUrl>
</parameters>
- Поля имеют разные типы данных в Power BI и в Dataverse. Они должны быть одного типа, например строка в Power BI и строка в Dataverse.
- Строковые поля не имеют escape-кавычек в фильтре Power BI. Обратите внимание, что
values
имеет[\"$a\"]
, а не[$a]
.
{
"Filter": "[{
\"$schema\":\"basic\",
\"target\":{
\"table\":\"table_name_of_power_bi_dataset\",
\"column\":\"power_bi_field\"
},
\"operator\":\"In\",
\"values\":[\"$a\"],
\"filterType\":1
}]",
"Alias": {
"$a": "field_name_in_powerapps_to_filter",
}
}
См. также
Внедрение панели мониторинга Power BI в персональную панель мониторинга на основе модели Power Apps
Используйте Power BI с приложениями Dynamics 365
Примечание
Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).
Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).