Power BI Rest API: из набора данных в Google Sheets, Excel и Power Query

Power BI Rest API: из набора данных в Google Sheets, Excel и Power Query

Можно ли выгрузить данные из Power BI в Google Sheets? Этот вопрос мне прислали в Telegram и он поставил меня в тупик. Я знал, что есть mez-коннектор для подключения к Power BI Service, также есть разные виды подключения к Power BI из Excel, но в Google Sheets - не слышал.

Пришлось собрать все материалы воедино, победить нестандартную авторизацию и написать нормальные функции для Excel, Power BI и Google Sheets. Теперь можно получать данные датасета Power BI Service с помощью DAX-запроса в Excel, Power BI или Google Sheets.

Настройка API Power BI

Часто нам достаточно получения токена, но в Power BI настройка API не так проста. Чтобы не ссылаться на чужие статьи, распишу её целиком.

Переходим по ссылке и регистрируем приложение (внизу будет кнопка "зарегистрировать").

Находим приложение в списке приложений и нажимаем на него. Видим ID приложения и каталога - они нам понадобятся:

Слева будет меню, где вам нужно найти "Разрешения API", чтобы добавить разрешение: 

Выбираем Power BI Service и выбираем следующие настройки:

Предоставляем согласие администратора и ваше API готово к работе:

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

Нам потребуется не ID секрета, а именно его значение:

Переходим в портал администрирования Power BI и активируем возможность работы с API:

Интересный момент: получить данные по API могут только пользователи Power BI Pro. Дело в том, что для предоставления доступа к API нужно дать приложению доступ к рабочей области. Но стандартная "Моя рабочая область" не имеет функционала предоставления доступа. Считается, что это личная рабочая область, а создание других рабочих областей - это уже функционал Pro. 

Когда мы создали рабочую область, заходим в управление доступом к ней и жмём "Добавить людей или группы":

Вместо людей находим приложение и даём ему доступ к рабочей области:

Наборы данных и запрос DAX

Мы создали приложение в каталоге Azure и добавили для этого приложения "секрет клиента". Помимо ID каталога, ID приложения и Секрета клиента, мы должны знать ID набора данных (датасета) и иметь DAX запрос для получения нужных данных.

Анонсы всех видео, статей и полезностей - в нашем Telegram-канале🔥
Присоединяйтесь, обсуждайте и автоматизируйте!

Для получения ID датасета заходим в Power BI Service, вводим в поиск название файла и находим значок с точками. Это и будет датасет или как он сейчас называется в Power BI Service - "Семантическая модель", жмём на его название:

Перейдя в набор данных, обнаруживаем его ID после "datasets/" и до "/details":

Остаётся придумать запрос DAX. Если вам нужна вся таблица, самым простым вариантом будет:

EVALUATE 'Название таблицы'

По аналогии с DAX Studio, здесь нужно использовать EVALUATE, чтобы вывести табличный результат. Если нужно что-то более сложное - заранее проверьте работу вашего DAX-запроса в Power BI Desktop. Не забывайте про кавычки, названия таблиц на русском языке или с пробелами не работают без кавычек.

Теперь мы знаем: ID каталога, ID приложения, Секрет клиента, ID датасета и запрос DAX. Можно переходить к получению данных🔥

Подключение к API Power BI из Power Query

Копируем функцию для PQ и вставляем в расширенный редактор Power Query в Excel или Power BI:  

Вызов функции выглядит так - результат приходит в виде строк, которые нужно развернуть: 

При использовании функции в Power BI, отчёт будет корректно обновляться.

Подключение к API Power BI из Google Sheets 

Мы разместили коннектор для Google Sheets на Boosty по подписке ПРО. Копируем функцию, заходим в Google Sheets, выбираем "Расширения" -> "App Script":

Вставляем скрипт, указываем в первых строчках основные параметры и сохраняемся. Запрос DAX может меняться, поэтому его мы в коде не прописываем, всё остальное прописывается именно тут. client_id - это ID приложения, остальное соответствует русским названиям:

После сохранения скрипта обновляем страницу Google Sheets, в верхнем меню должен появиться пункт "Power BI". Выбираем любую ячейку и пишем туда DAX-запрос. Затем вызываем функцию "Execute DAX" из появившегося пункта меню. 

Чтобы структурировать страницу, скрипт установит запрос DAX в левую верхнюю ячейку, а ниже разместит результат. Если вы захотите обновить таблицу, выберите ячейку с запросом и повторите вызов. Функция работает именно с выбранной ячейкой, будьте внимательны.

Итоги

Теперь у вас есть функции для получения данных из Power BI Rest API в Google Sheets, в Excel или в новый отчёт Power BI. Это позволит создавать отчёты для проверки других отчётов и использовать данные разных отчётов вместе. Если вам помогла статья, можете отблагодарить подпиской на Boosty😊

Отдельное спасибо коллегам из Prometriki и Роману Шапкову - их материалы очень помогли в работе над этой статьей: 

Комментарии