Работа с Power BI Matrix на основе данных из оператора DAX
У меня следующие требования:
- Пользователь увидит матрицу Power BI на веб-странице (в отличие от Power BI Desktop).
- Веб-страница должна содержать три элемента: текстовое поле, кнопку и матрицу Power BI (потенциально включенную в отчет Power BI).
- Пользователь вводит оператор DAX в текстовое поле и щелкает по кнопке, чтобы заставить матрицу принять оператор DAX, выполнить его и заполнить данные.
- Пользователь должен иметь возможность детализировать матрицу.
- Пользователь может повторно ввести новый оператор DAX, обновив матрицу.
Теперь вся документация, которую я смог найти, например здесь , говорит о матрице в Power BI Desktop (то есть не веб-странице) и данных, полученных путем выбора вручную таблиц / столбцов / показателей (в правой части экрана).
В Power BI Studio я знаю, что могу ввести оператор DAX, создав таблицу в верхней панели, например, если у меня есть DAX:
EVALUATE TOPN (3, branches)
Я мог бы создать таблицу для заполнения матрицы:
BranchesTable = TOPN (3, branches)
Но как динамически связать статус DAX, определенный во время выполнения, с матрицей на веб-странице?
Ответы
В настоящее время невозможно сделать именно то, что вы хотите. Вы можете динамически изменять источник данных и обновлять запрос, используемый в конкретном отчете, но нет доступного API (PowerBI REST или PowerBI JavaScript) для обновления того, какие столбцы находятся на визуальном элементе в отчете. Вы можете довольно близко подойти к тому, что хотите, но отчет не может отображаться в View
режиме, и его нужно будет отображать в Edit
режиме, чтобы пользователь имел возможность перетаскивать поля, созданные из их обновленных результатов запроса DAX, на визуальный элемент Matrix вручную, они вносят изменения.
Предполагая, что у вас уже есть предварительная установка и конфигурация регистрации приложения, и вы готовы к встраиванию, вот несколько шагов, которые помогут приблизиться к тому, что вы ищете. Если вы не готовы к встраиванию, ниже приведена документация, содержащая 8 шагов, которые я предоставил, чтобы завершить предварительную настройку для возможности встраивания.
- Использование PowerBI Desktop Создайте шаблонный отчет с визуальным элементом матрицы и подключением к источнику данных, который вы хотите использовать. Обязательно настройте этот отчет с использованием определенного запроса, а НЕ всех таблиц в источнике данных, будь то SQL или SSAS. (Вы указываете запрос в расширенных параметрах при первоначальной настройке источника данных в отчете)
- Настройте шлюз данных Power BI для источника данных, который использует ваш отчет
- Создайте рабочее пространство на PowerBI.com для загрузки отчета на
- Использование PowerBI Desktop Опубликуйте отчет, созданный на шаге 1, в рабочем пространстве, созданном на шаге 3.
- В вашем веб-приложении, когда пользователь просматривает страницу средства просмотра отчетов, вам нужен способ идентифицировать каждого пользователя. Предположим, у вас есть
UserId
поле с уникальным идентификатором для каждого пользователя. Позвоните в GetReports в группеhttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreportsingroup. У вас должно быть известное имя отчета плюс UserId. Предположим, его DynamicReport. Поэтому вызовите GetReports и проверьте,DynamicReport_UserId
существует ли для пользователя, пытающегося просмотреть страницу средства просмотра отчетов в вашем веб-приложении. - В этом вызове API результат шага 5, если отчет не существует для пользователя, используйте https://docs.microsoft.com/en-us/rest/api/power-bi/reports/clonereport чтобы клонировать шаблон отчета, опубликованный на шаге 4.
- Встраивать и отображать пользовательский шаблон отчета (DynamicReport_UserId) для пользователя.
- Имейте логику на странице средства просмотра отчетов, чтобы пользователь мог отправлять и
POST
запросы DAX. Когда они делают отправку, у них есть логика для использованияhttps://docs.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasources на бэкэнде, чтобы обновить источник данных в своем отчете, а затем снова встроить отчет со своим выражением DAX и измененными данными.
Визуальный элемент не будет автоматически обновляться до новых полей из нового запроса, отправленного пользователем, но доступные поля данных, которые они имеют в режиме редактора, изменятся. Пользователь должен будет перетащить поля из своего запроса DAX на визуал Matrix или любой визуальный тип, который они собираются использовать. Вы не сможете просто отобразить отчет в View
режиме, так как у вас нет возможности программно обновить поля, отображаемые в визуальном элементе. Пользователь может даже сначала увидеть неработающий визуальный элемент из-за измененного запроса и полей визуальных ссылок из ранее использованного запроса. Вы можете использовать PowerBI Javascript API, чтобы скрыть существующий визуальный элемент, чтобы улучшить пользовательский интерфейс, чтобы пользователь не видел что-то сломанное.
Дайте мне знать, если у вас есть какие-либо конкретные вопросы об этих вызовах API или о том, как их использовать.
Вот где я искал функциональность Power BI JavaScript https://github.com/Microsoft/powerbi-javascript/wiki (Не могу найти ничего специфического для визуальных элементов матрицы. Функциональность JavaScript для визуальных элементов, общих для визуальных элементов, а не визуальных типов, таких как матрица или карта)
Вот документация Microsoft по доступным REST API и https://docs.microsoft.com/en-us/rest/api/power-bi/
Вот несколько полезных ресурсов, чтобы узнать больше о встраивании
https://docs.microsoft.com/en-us/power-bi/developer/embedded/register-app https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedding
Если вам нужна возможность детализации, Иерархии - отличный вариант
https://spreadsheeto.com/power-bi-hierarchy/