Встраивание отчета Power BI в основную форму приложения на основе модели

Важно!

Существует более удобный способ добавления отчета Power BI в форму приложения на основе модели. Дополнительные сведения: Использование элемента управления "Отчет Power BI" для добавления отчета

Можно использовать отчеты Power BI в приложениях на основе модели Power Apps, чтобы обеспечить широкие возможности отчетности и аналитики в основных формах и позволить пользователям добиваться лучших результатов. Это разблокирует возможность агрегирования данных между системами и их настройки вплоть до контекста одной записи.  

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

Внедрение содержимого Power BI — это необязательная функция, которая по умолчанию отключена во всех средах. Необходимо включить ее, прежде чем можно будет внедрять содержимое Power BI. Дополнительные сведения: Включение визуализации Power BI в организации.

Эта функция требует экспортировать решение, изменить его для добавления фрагмента xml, а затем импортировать обратно в среду. Обязательно импортируйте изменения в целевую среду только через управляемое решение. См. раздел Импорт, обновление и экспорт решений для получения инструкций по установке обновления существующего управляемого решения.

Внедрение без контекстной фильтрации

Можно использовать отчеты Power BI, внедряя их, и получать точно такой же отчет. Это не предполагает их контекстную настройку для текущей формы на основе модели, поэтому вы получаете одинаковый отчет для всех записей таблицы. Например, в следующем отчет отображается географическое расположение всех организаций сразу, что удобно для отображения сводной информации.

Внедренный отчет Power BI без контекстной фильтрации.

Вы можете настроить код XML узла sections основной формы, чтобы в нем можно было разместить встроенный отчет и плитку Power BI, выполнив следующие действия:

  1. В своей среде разработки создайте решение и добавьте таблицу, содержащую основную форму, в которую вы хотите встроить отчет Power BI для отображения.

    • Если таблица уже существует в целевой среде, куда вы импортируете решение, выберите вариант Выбрать компоненты при добавлении таблицы в решение. Затем добавьте только основную форму таблицы.
    • Если таблица не существует в целевой среде, куда вы импортируете решение, выберите вариант Включить все компоненты при добавлении таблицы в решение.
  2. Экспортируйте решение как управляемое.

  3. Распакуйте все файлы из 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.

  1. Внесите следующие изменения в 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.
  1. Создайте zip-файл из всех ранее извлеченных файлов решения. Затем импортируйте решение в целевую среду.

Внедрение с контекстной фильтрацией

Можно сделать отчеты Power BI более полезными, применив контекстные фильтры к текущей управляемой моделью форме, чтобы фильтровать отчет на основе атрибутов текущей строки. Например, следующий отчет показывает географическое расположение организации путем фильтрации отчета 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

  1. Идентификатор рабочей области для этого примера: efc85277-2bdb-47bc-9762-363f64335108.
  2. Идентификатор отчета для этого примера: 643ab643-7126-4a57-bd82-ca8f1fb676fc. Пример идентификатора рабочей области и идентификатора отчета Power BI

Известные проблемы и ограничения

  • Эта интеграция доступна только в клиенте единого интерфейса в поддерживаемых веб-браузерах и на мобильных устройствах.

  • При открытии этой формы в конструкторе форм Power Apps этот элемент управления не будет отображаться должным образом. Это связано с тем, что элемент управления был настроен вне конструктора форм.

  • Пользователи будут проходить проверку подлинности в Power BI автоматически со своим именем пользователя и паролем Power Apps. Если учетная запись Power BI с соответствующими учетными данными не существует, отображается приглашение для входа, как показано ниже.

    Запрос на вход в Power BI.

    Никакие данные не отображаются, если неправильная организации используется для входа в 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.

Типичные проблемы

  • ИД группы не указан в узле 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&amp;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

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).