Интеграция ADVANTA с Power BI

Power BI Desktop - это настольное приложение от Microsoft, предназначенное для создания интерактивных отчетов и визуализаций данных.

Подключение Power BI Desktop к Системе ADVANTA выполняется с помощью скрипта на языке Python. В качестве источника для получения данных используются LINQ-запросы, настроенные в ADVANTA.

Чтобы настроить в Power BI Desktop визуализацию по данным из Системы ADVANTA, требуется выполнить следующие шаги:

  1. Настроить LINQ-запросы с необходимыми данными в разделе Администрирования ADVANTA.
  2. Создать проект в PowerBI.
  3. Добавить в PowerBI новый источник данных.
  4. Добавить в источник данных обработчик для получения данных из API ADVANTA.
  5. Сконструировать дашборд в PowerBI.



Ниже рассмотрен пример настройки дашборда в PowerBI на основе двух источников (LINQ-запросов) из Системы ADVANTA. На основе этого примера Вы можете создавать собственные источники в Системе для автоматического получения данных из ADVANTA в Power BI Desktop.

Чтобы загрузить данные из ADVANTA в PowerBI, необходимо сначала создать в ADVANTA источники данных в виде LINQ-запросов (необходим хотя бы один запрос). LINQ-запросы станут источниками данных для соответствующих дашбордов в PowerBI.

Для этого перейти в Системе ADVANTA в раздел Администрирование → Дополнительные сервисы → Источники LINQ. На странице выбрать либо уже созданный источник, либо создать новый. В примере ниже выбрано два уже созданных источника для BI: «КТ» и «Проекты».


Нужно присвоить LINQ-запросам имена и ключи. Для удобства имена, ключи и id запросов необходимо скопировать и сохранить.


Для того чтобы при импорте в PowerBI обращаться к API ADVANTA, надо использовать скрипт на Python. Для этого необходимо установить Python на ПК и проверить, что он работает.


В используемой инсталляции Python для работы скрипта нужно также установить менеджер пакетов - pip и выполнить команду для установки библиотек:

python -m pip install requests matplotlib pandas
  • requests - чтобы обращаться к API через HTTP-протокол;
  • matplotlib и pandas - библиотеки для работы с данными, которые использует PowerBI для конвертации полученных в формате JSON данных из Системы ADVANTA в свой внутренний формат таблиц.



Заходим в Power BI Desktop и создаем/открываем отчет - в этом отчете будет настраиваться новый источник данных.


В параметрах PowerBI необходимо проверить, что выбран правильный путь к установленному интерпретатору Python. Для этого:
  1. Зайти во вкладку «Файл» → Параметры и настройки → Параметры.
  2. В открывшемся окне зайти на вкладку «Создание скриптов Python» и выбрать либо домашний каталог Python, либо указать конкретный корневой каталог.

В отчете создаем новый источник данных: вкладка «Получить данные» → Другие → Скрипт Python → Подключить.


В поле «Сценарий» вставить код из примера:

# не забудьте установить требуемые библиотеки 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())
  1. Заполнить данные для авторизации, указав свой логин и пароль для подключения к Системе ADVANTA (но лучше использовать токен).
  2. В строке DOMAIN указать адрес сервера, на котором размещена Система ADVANTA, из которой нужно будет получать данные.
  3. Подключить использование сессии - выбрав авторизацию в Системе ADVANTA через логин и пароль, или через токен.
  4. Указать ключ LINQ-запроса из ADVANTA, который был сохранен ранее. Также можно ограничить количество данных, приходящих в запросе.


Подробнее о параметрах вызовов Web API ADVANTA для получения данных из LINQ-запросов можно прочитать на отдельной странице.

После заполнения всех параметров нажимаем «Ок» - начнется подключение к ADVANTA. Если скрипт успешно отработал, в PowerBI появятся импортированные данные. Надо выбрать источник слева и затем нажать «Загрузить» внизу окна. Далее полученные из ADVANTA данные можно обрабатывать и преобразовывать средствами PowerBI для большего удобства работы с ними в дашбордах.


Для формирования дашборда необходимо сделать столько источников в PowerBI, сколько их нужно импортировать из ADVANTA, т.е. один LINQ-источник = один источник данных в PowerBI. В последующем, при нажатии кнопки «Обновить данные» в отчете PowerBI, информация из Системы ADVANTA будет запрашиваться автоматически с использованием сохраненного в параметрах источника данных Python-скрипта.

После добавления всех необходимых источников в модели данных PowerBI можно связать поля источников между собой для автоматической фильтрации данных в дашбордах. В примере свяжем ProjectId из таблицы «milestones» и Id из таблицы «projects».


На основе загруженных данных можно создать необходимые визуализации в PowerBI, подключая их к нужным источникам данных.

Например, можно сделать панель в виде таблицы, которая будет содержать список проектов с их id и статусом.


Также можно сделать таблицу с перечнем контрольных точек и базовой датой их окончания.


Так как данные двух таблиц связаны, то при выборе «Проекта» в верхнем списке - перечень «Контрольных точек» в нижней части дашборда будет автоматически фильтроваться по id выбранного проекта за счет ранее установленной связи между таблицами.


После настроек визуализации готовый файл PowerBI необходимо сохранить. Дальнейшая настройка дашбордов в PowerBI осуществляется стандартными средствами данного приложения.