Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
product:api:integration_examples:power-bi [21.07.2025 09:17] ekaterina.menkhuzinaproduct:api:integration_examples:power-bi [21.07.2025 10:12] (текущий) – [Добавление нового источника данных] ekaterina.menkhuzina
Строка 29: Строка 29:
 Для того чтобы при импорте в PowerBI обращаться к API ADVANTA, надо использовать скрипт на [[https://www.python.org|Python]]. Для этого необходимо установить Python на ПК и проверить, что он работает.  Для того чтобы при импорте в PowerBI обращаться к API ADVANTA, надо использовать скрипт на [[https://www.python.org|Python]]. Для этого необходимо установить Python на ПК и проверить, что он работает. 
 \\ \\
-<image shape="thumbnail">{{ :product:api:integration_examples:python1.png |}}</image>+<image shape="thumbnail">{{ :product:api:integration_examples:python1.png?600 |}}</image>
 \\ \\
 В используемой инсталляции Python для работы скрипта нужно также установить менеджер пакетов - ''pip'' и выполнить команду для установки библиотек: В используемой инсталляции Python для работы скрипта нужно также установить менеджер пакетов - ''pip'' и выполнить команду для установки библиотек:
Строка 38: Строка 38:
   * matplotlib и pandas - библиотеки для работы с данными, которые использует PowerBI для конвертации полученных в формате JSON данных из Системы ADVANTA в свой внутренний формат таблиц.   * matplotlib и pandas - библиотеки для работы с данными, которые использует PowerBI для конвертации полученных в формате JSON данных из Системы ADVANTA в свой внутренний формат таблиц.
 \\ \\
-<image shape="thumbnail">{{ :product:api:integration_examples:python2.png |}}</image>+<image shape="thumbnail">{{ :product:api:integration_examples:python2.png?600 |}}</image>
 \\ \\
 ===== Создание проекта в PowerBI ===== ===== Создание проекта в PowerBI =====
Строка 45: Строка 45:
 <image shape="thumbnail">{{ :product:api:integration_examples:powerbi1.png?900 |}}</image> <image shape="thumbnail">{{ :product:api:integration_examples:powerbi1.png?900 |}}</image>
 \\ \\
-==== Добавление нового источника данных  ====+==== Добавление нового источника данных ==== 
 +<callout type="warning" icon="true">В параметрах PowerBI необходимо проверить, что выбран правильный путь к установленному интерпретатору Python. Для этого: 
 +  - Зайти во вкладку "Файл" → Параметры и настройки → Параметры. 
 +  - В открывшемся окне зайти на вкладку "Создание скриптов Python" и выбрать либо домашний каталог Python, либо указать конкретный корневой каталог. 
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi14.png?700 |}}</image> 
 +</callout>
  
 +В отчете создаем новый источник данных: вкладка "Получить данные" → Другие → Скрипт Python → Подключить.
 +\\
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi2.png?900 |}}</image>
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi3.png?600 |}}</image>
 +\\
 +В поле "Сценарий" вставить код из примера:
 +<code 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())
 +</code>
 +  - Заполнить данные для авторизации, указав свой логин и пароль для подключения к Системе ADVANTA (но лучше использовать [[product:auth:users:token_mgt|токен]]). \\ <image shape="thumbnail">{{ :product:api:integration_examples:powerbi4.png?600 |}}</image>
 +  - В строке DOMAIN указать адрес сервера, на котором размещена Система ADVANTA, из которой нужно будет получать данные. \\ <image shape="thumbnail">{{ :product:api:integration_examples:powerbi5.png?600 |}}</image>
 +  - Подключить использование сессии - выбрав авторизацию в Системе ADVANTA через логин и пароль, или через [[product:auth:users:token_mgt|токен]]. \\ <image shape="thumbnail">{{ :product:api:integration_examples:powerbi6.png?600 |}}</image>
 +  - Указать ключ LINQ-запроса из ADVANTA, который был сохранен ранее. Также можно ограничить количество данных, приходящих в запросе. \\ <image shape="thumbnail">{{ :product:api:integration_examples:powerbi7.png?600 |}}</image>
 +\\
 +<callout type="info" icon="true">Подробнее о параметрах вызовов Web API ADVANTA для получения данных из LINQ-запросов можно прочитать на отдельной [[product:linq:new|странице]].</callout>
 +
 +После заполнения всех параметров нажимаем "Ок" - начнется подключение к ADVANTA. Если скрипт успешно отработал, в PowerBI появятся импортированные данные. Надо выбрать источник слева и затем нажать "Загрузить" внизу окна. Далее полученные из ADVANTA данные можно обрабатывать и преобразовывать средствами PowerBI для большего удобства работы с ними в дашбордах.
 +\\
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi8.png?600 |}}</image>
 +\\
 +Для формирования дашборда необходимо сделать столько источников в PowerBI, сколько их нужно импортировать из ADVANTA, т.е. один LINQ-источник = один источник данных в PowerBI. В последующем, при нажатии кнопки "Обновить данные" в отчете PowerBI, информация из Системы ADVANTA будет запрашиваться автоматически с использованием сохраненного в параметрах источника данных Python-скрипта. 
 +
 +==== Формирование дашборда в PowerBI ====
 +После добавления всех необходимых источников в модели данных PowerBI можно связать поля источников между собой для автоматической фильтрации данных в дашбордах. В примере свяжем ProjectId из таблицы "milestones" и Id из таблицы "projects".
 +\\
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi9.png?600 |}}</image>
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi10.png?900 |}}</image>
 +\\
 +На основе загруженных данных можно создать необходимые визуализации в PowerBI, подключая их к нужным источникам данных.
 +
 +Например, можно сделать панель в виде таблицы, которая будет содержать список проектов с их id и статусом.
 +\\
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi11.png?900 |}}</image>
 +\\
 +Также можно сделать таблицу с перечнем контрольных точек и базовой датой их окончания.
 +\\
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi12.png?900 |}}</image>
 +\\
 +Так как данные двух таблиц связаны, то при выборе "Проекта" в верхнем списке - перечень "Контрольных точек" в нижней части дашборда будет автоматически фильтроваться по id выбранного проекта за счет ранее установленной связи между таблицами.
 +\\
 +<image shape="thumbnail">{{ :product:api:integration_examples:powerbi13.png?900 |}}</image>
 +\\
 +После настроек визуализации готовый файл PowerBI необходимо сохранить. Дальнейшая настройка дашбордов в PowerBI осуществляется стандартными средствами данного приложения.