====== Интеграция ADVANTA с Power BI ======
**Power BI Desktop** - это настольное приложение от Microsoft, предназначенное для создания интерактивных отчетов и визуализаций данных.
Подключение Power BI Desktop к Системе ADVANTA выполняется с помощью скрипта на языке Python. В качестве источника для получения данных используются LINQ-запросы, настроенные в ADVANTA.
Чтобы настроить в Power BI Desktop визуализацию по данным из Системы ADVANTA, требуется выполнить следующие шаги:
- Настроить LINQ-запросы с необходимыми данными в разделе Администрирования ADVANTA.
- Создать проект в PowerBI.
- Добавить в PowerBI новый источник данных.
- Добавить в источник данных обработчик для получения данных из API ADVANTA.
- Сконструировать дашборд в PowerBI.
\\
{{ :product:api:integration_examples:advanta_powerbi.png?900 |}}
\\
Ниже рассмотрен пример настройки дашборда в PowerBI на основе двух источников (LINQ-запросов) из Системы ADVANTA. На основе этого примера Вы можете создавать собственные источники в Системе для автоматического получения данных из ADVANTA в Power BI Desktop.
===== Настройка LINQ-запросов =====
Чтобы загрузить данные из ADVANTA в PowerBI, необходимо сначала создать в ADVANTA источники данных в виде LINQ-запросов (необходим хотя бы один запрос). LINQ-запросы станут источниками данных для соответствующих дашбордов в PowerBI.
Для этого перейти в Системе ADVANTA в раздел Администрирование → Дополнительные сервисы → Источники LINQ. На странице выбрать либо уже созданный источник, либо создать новый. В примере ниже выбрано два уже созданных источника для BI: "КТ" и "Проекты".
\\
{{ :product:api:integration_examples:linq.png?900 |}}
\\
Нужно присвоить LINQ-запросам имена и ключи. Для удобства имена, ключи и id запросов необходимо скопировать и сохранить.
\\
{{ :product:api:integration_examples:linq2.png |}}
\\
===== Настройка Python =====
Для того чтобы при импорте в PowerBI обращаться к API ADVANTA, надо использовать скрипт на [[https://www.python.org|Python]]. Для этого необходимо установить Python на ПК и проверить, что он работает.
\\
{{ :product:api:integration_examples:python1.png?600 |}}
\\
В используемой инсталляции Python для работы скрипта нужно также установить менеджер пакетов - ''pip'' и выполнить команду для установки библиотек:
python -m pip install requests matplotlib pandas
* requests - чтобы обращаться к API через HTTP-протокол;
* matplotlib и pandas - библиотеки для работы с данными, которые использует PowerBI для конвертации полученных в формате JSON данных из Системы ADVANTA в свой внутренний формат таблиц.
\\
{{ :product:api:integration_examples:python2.png?600 |}}
\\
===== Создание проекта в PowerBI =====
Заходим в Power BI Desktop и создаем/открываем отчет - в этом отчете будет настраиваться новый источник данных.
\\
{{ :product:api:integration_examples:powerbi1.png?900 |}}
\\
==== Добавление нового источника данных ====
В параметрах PowerBI необходимо проверить, что выбран правильный путь к установленному интерпретатору Python. Для этого:
- Зайти во вкладку "Файл" → Параметры и настройки → Параметры.
- В открывшемся окне зайти на вкладку "Создание скриптов Python" и выбрать либо домашний каталог Python, либо указать конкретный корневой каталог.
{{ :product:api:integration_examples:powerbi14.png?700 |}}
В отчете создаем новый источник данных: вкладка "Получить данные" → Другие → Скрипт Python → Подключить.
\\
{{ :product:api:integration_examples:powerbi2.png?900 |}}
{{ :product:api:integration_examples:powerbi3.png?600 |}}
\\
В поле "Сценарий" вставить код из примера:
# не забудьте установить требуемые библиотеки Python:
# python -m pip install requests matplotlib pandas
import requests
from pandas import json_normalize
# данные пользователя для подключения к инсталляции ADVANTA
# LOGIN = ''
# PASSWORD = ''
# лучше использовать токен - см. Вики
# https://wiki.a2nta.ru/doku.php/product/auth/users/token_management
# https://wiki.a2nta.ru/doku.php/product/linq/new#webapi
TOKEN = 'enter_your_token_here'
# адрес сервера с системой ADVANTA (при необходимости можно указать справа от домена каталог установки, если система расположена не в корне домена)
DOMAIN = 'https://test.a2nta.ru'
# переменная для хранения параметров сессии
session = requests.Session()
# авторизация в ADVANTA
response = session.post(
url=DOMAIN+'/api/auth/login',
### если используем подключение с помощью логина и пароля
# json={
# 'Login': LOGIN,
# 'Password': PASSWORD,
# },
### если подключаемся, используя токен
json={
'tokenValue': TOKEN,
},
)
# сохранение полученных авторизационных cookies для дальнейшего использования
cookies = session.cookies.get_dict()
# получение данных из LINQ-запроса
response = session.post(
url=DOMAIN+'/api/queries/get',
cookies=cookies,
json={
# указать ваш код LINQ-запроса и его параметры
'DataSourceKey': 'enter_your_linq_code_here',
'PageSize': 100,
},
)
# возвращаем данные в Power BI в нужном для дальнейшей обработки формате
projects = json_normalize(response.json())
- Заполнить данные для авторизации, указав свой логин и пароль для подключения к Системе ADVANTA (но лучше использовать [[product:auth:users:token_mgt|токен]]). \\ {{ :product:api:integration_examples:powerbi4.png?600 |}}
- В строке DOMAIN указать адрес сервера, на котором размещена Система ADVANTA, из которой нужно будет получать данные. \\ {{ :product:api:integration_examples:powerbi5.png?600 |}}
- Подключить использование сессии - выбрав авторизацию в Системе ADVANTA через логин и пароль, или через [[product:auth:users:token_mgt|токен]]. \\ {{ :product:api:integration_examples:powerbi6.png?600 |}}
- Указать ключ LINQ-запроса из ADVANTA, который был сохранен ранее. Также можно ограничить количество данных, приходящих в запросе. \\ {{ :product:api:integration_examples:powerbi7.png?600 |}}
\\
Подробнее о параметрах вызовов Web API ADVANTA для получения данных из LINQ-запросов можно прочитать на отдельной [[product:linq:new|странице]].
После заполнения всех параметров нажимаем "Ок" - начнется подключение к ADVANTA. Если скрипт успешно отработал, в PowerBI появятся импортированные данные. Надо выбрать источник слева и затем нажать "Загрузить" внизу окна. Далее полученные из ADVANTA данные можно обрабатывать и преобразовывать средствами PowerBI для большего удобства работы с ними в дашбордах.
\\
{{ :product:api:integration_examples:powerbi8.png?600 |}}
\\
Для формирования дашборда необходимо сделать столько источников в PowerBI, сколько их нужно импортировать из ADVANTA, т.е. один LINQ-источник = один источник данных в PowerBI. В последующем, при нажатии кнопки "Обновить данные" в отчете PowerBI, информация из Системы ADVANTA будет запрашиваться автоматически с использованием сохраненного в параметрах источника данных Python-скрипта.
==== Формирование дашборда в PowerBI ====
После добавления всех необходимых источников в модели данных PowerBI можно связать поля источников между собой для автоматической фильтрации данных в дашбордах. В примере свяжем ProjectId из таблицы "milestones" и Id из таблицы "projects".
\\
{{ :product:api:integration_examples:powerbi9.png?600 |}}
{{ :product:api:integration_examples:powerbi10.png?900 |}}
\\
На основе загруженных данных можно создать необходимые визуализации в PowerBI, подключая их к нужным источникам данных.
Например, можно сделать панель в виде таблицы, которая будет содержать список проектов с их id и статусом.
\\
{{ :product:api:integration_examples:powerbi11.png?900 |}}
\\
Также можно сделать таблицу с перечнем контрольных точек и базовой датой их окончания.
\\
{{ :product:api:integration_examples:powerbi12.png?900 |}}
\\
Так как данные двух таблиц связаны, то при выборе "Проекта" в верхнем списке - перечень "Контрольных точек" в нижней части дашборда будет автоматически фильтроваться по id выбранного проекта за счет ранее установленной связи между таблицами.
\\
{{ :product:api:integration_examples:powerbi13.png?900 |}}
\\
После настроек визуализации готовый файл PowerBI необходимо сохранить. Дальнейшая настройка дашбордов в PowerBI осуществляется стандартными средствами данного приложения.