====== Интеграция 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 осуществляется стандартными средствами данного приложения.