Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| product:api:integration_examples:aw [21.04.2024 22:04] – liliia.katrenko | product:api:integration_examples:aw [07.08.2024 05:55] (текущий) – [1)Сформировать в ADVANTA LINQ-запросы] ekaterina.menkhuzina | ||
|---|---|---|---|
| Строка 4: | Строка 4: | ||
| Ниже приведена подробная пошаговая инструкция по организации процесса обмена данными между двумя системами. Для реализации обмена у вас должен быть доступ к по крайней мере к демо-версиям данных продуктов. | Ниже приведена подробная пошаговая инструкция по организации процесса обмена данными между двумя системами. Для реализации обмена у вас должен быть доступ к по крайней мере к демо-версиям данных продуктов. | ||
| - | **1) Сформировать в ADVANTA LINQ-запросы** | + | ==== 1) Сформировать в ADVANTA LINQ-запросы |
| - | Интеграция с Analytic Workspace организована с использование [[corporative: | + | Интеграция с Analytic Workspace организована с использованием [[corporative: |
| - | Пример LINQ-запроса данных по проектам | + | === Пример LINQ-запроса данных по проектам |
| <code csharp> | <code csharp> | ||
| Строка 45: | Строка 45: | ||
| </ | </ | ||
| - | Пример LINQ-запроса данных по контрольным точкам | + | \\ |
| + | === Пример LINQ-запроса данных по контрольным точкам | ||
| + | |||
| <code csharp> | <code csharp> | ||
| Строка 79: | Строка 81: | ||
| <callout type=" | <callout type=" | ||
| - | ** 2) Создать шаблоны таблиц данных в формате .xlsx ** | + | \\ |
| + | | ||
| Данные шаблоны необходимы для формирования структуры хранения данных в AW в соответствии со структурой получаемых их ADVANTA данных. | Данные шаблоны необходимы для формирования структуры хранения данных в AW в соответствии со структурой получаемых их ADVANTA данных. | ||
| - | Для создания шаблона необходимо выполнить созданный LINQ-запрос в ADVANTA, скопировать шапку полученной таблицы в Excel и сохранить файл в формате .xlsx. | + | Для создания шаблона необходимо |
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | === Пример шаблона для источника данных по проектам === | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | === Пример шаблона для источника данных по контрольным точкам === | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | Загрузите данные шаблоны в Analytic Workspace, в раздел «Источники данных» — здесь необходимо **создать источник, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | ==== 3) Создать модель в Analytic Workspace и сформировать скрипт в ETL-редакторе ==== | ||
| + | |||
| + | После создания источника необходимо в соответствующем разделе Analytic Workspace **создать модель**, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | Сразу после создания необходимо перейти в режим редактирования модели и зайти в **ETL-редактор**. | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | В открывшемся редакторе необходимо ввести скрипт для обработки получаемых из ADVANTA данных. Скрипт написан на Python. | ||
| + | |||
| + | \\ | ||
| + | === Пример скрипта для проектов === | ||
| + | |||
| + | <code csharp> | ||
| + | # ----------------------------------------------------------------------------------- | ||
| + | # Cкрипт для обработки модели * * * | ||
| + | # ----------------------------------------------------------------------------------- | ||
| + | |||
| + | import requests | ||
| + | import datetime | ||
| + | from pyspark.sql import Row | ||
| + | |||
| + | # python - m pip install requests, matplotlib, pandas | ||
| + | |||
| + | from pandas import json_normalize | ||
| + | |||
| + | def after_all(df, | ||
| + | print(df.schema) | ||
| + | |||
| + | LOGIN = '* * *' | ||
| + | PASSWORD = '* * *' | ||
| + | DOMAIN = ' | ||
| + | |||
| + | AUTH = { | ||
| + | ' | ||
| + | ' | ||
| + | } | ||
| + | |||
| + | session = requests.Session() | ||
| + | # cookies = session.cookies.get_dict() # {} | ||
| + | |||
| + | # авторизация | ||
| + | response = session.post(url=DOMAIN+'/ | ||
| + | |||
| + | cookies = session.cookies.get_dict() | ||
| + | |||
| + | # print(cookies) | ||
| + | |||
| + | # получение LINQ-запроса | ||
| + | LINQ = { | ||
| + | ' | ||
| + | # нужен другой запрос для перечня проектов в модель list1 | ||
| + | # ' | ||
| + | # и еще один для перечня КТ из этих проектов в модель list1_ywrq | ||
| + | # ' | ||
| + | ' | ||
| + | } | ||
| + | |||
| + | r = session.post(url=DOMAIN+'/ | ||
| + | |||
| + | if not r.ok: | ||
| + | raise Exception(f' | ||
| + | |||
| + | data = r.json() | ||
| + | |||
| + | # | ||
| + | rows = [] | ||
| + | for line in data: | ||
| + | rows.append(Row( | ||
| + | id=line[' | ||
| + | name=line[' | ||
| + | parentname=line[' | ||
| + | lifecyclename=line[' | ||
| + | # systemstartdate=str(datetime.datetime.fromisoformat(line[' | ||
| + | # systemenddate=str(datetime.datetime.fromisoformat(line[' | ||
| + | # actualstartdate=str(datetime.datetime.fromisoformat(line[' | ||
| + | # actualenddate=str(datetime.datetime.fromisoformat(line[' | ||
| + | # baselineplanstartdate=str(datetime.datetime.fromisoformat(line[' | ||
| + | # baselineplanenddate=str(datetime.datetime.fromisoformat(line[' | ||
| + | |||
| + | systemstartdate=line[' | ||
| + | systemenddate=line[' | ||
| + | actualstartdate=line[' | ||
| + | actualenddate=line[' | ||
| + | baselineplanstartdate=line[' | ||
| + | baselineplanenddate=line[' | ||
| + | |||
| + | bossfio=line[' | ||
| + | rpfio=line[' | ||
| + | description=line[' | ||
| + | projectscalename=line[' | ||
| + | projectgainname=line[' | ||
| + | |||
| + | # statusreport_date=str(datetime.datetime.fromisoformat(line[' | ||
| + | statusreport_date=line[' | ||
| + | |||
| + | statusreport_chto_sdelano_problemi_riski=line[' | ||
| + | statusreport_prichina_problemi=line[' | ||
| + | statusreport_statusname=line[' | ||
| + | budjetsum=line[' | ||
| + | )) | ||
| + | |||
| + | return spark.createDataFrame(rows) | ||
| + | </ | ||
| + | |||
| + | \\ | ||
| + | === Пример скрипта для контрольных точек === | ||
| + | |||
| + | <code csharp> | ||
| + | # # ----------------------------------------------------------------------------------- | ||
| + | # Cкрипт для обработки модели * * * | ||
| + | # ----------------------------------------------------------------------------------- | ||
| + | |||
| + | import requests | ||
| + | import datetime | ||
| + | from pyspark.sql import Row | ||
| + | from pandas import json_normalize | ||
| + | |||
| + | def after_all(df, | ||
| + | |||
| + | LOGIN = '* * *' | ||
| + | PASSWORD = '* * *' | ||
| + | DOMAIN = ' | ||
| + | |||
| + | AUTH = { | ||
| + | ' | ||
| + | ' | ||
| + | } | ||
| + | |||
| + | session = requests.Session() | ||
| + | # cookies = session.cookies.get_dict() # {} | ||
| + | |||
| + | # авторизация | ||
| + | response = session.post(url=DOMAIN+'/ | ||
| + | |||
| + | cookies = session.cookies.get_dict() | ||
| + | |||
| + | # print(cookies) | ||
| + | |||
| + | # получение LINQ-запроса | ||
| + | LINQ = { | ||
| + | ' | ||
| + | ' | ||
| + | } | ||
| + | |||
| + | r = session.post(url=DOMAIN+'/ | ||
| + | |||
| + | if not r.ok: | ||
| + | raise Exception(f' | ||
| + | |||
| + | data = r.json() | ||
| + | |||
| + | # | ||
| + | rows = [] | ||
| + | for line in data: | ||
| + | print(line) | ||
| + | rows.append(Row( | ||
| + | id=line[' | ||
| + | name=line[' | ||
| + | projectid=line[' | ||
| + | systemstartdate=line[' | ||
| + | systemenddate=line[' | ||
| + | actualstartdate=line[' | ||
| + | actualenddate=line[' | ||
| + | baselineplanstartdate=line[' | ||
| + | baselineplanenddate=line[' | ||
| + | bossfio=line[' | ||
| + | rpfio=line[' | ||
| + | description=line[' | ||
| + | result=line[' | ||
| + | statusreport_date=line[' | ||
| + | statusreport_chto_sdelano_problemi_riski=line[' | ||
| + | statusreport_prichina_problemi=line[' | ||
| + | statusreport_statusname=line[' | ||
| + | )) | ||
| + | |||
| + | return spark.createDataFrame(rows) | ||
| + | </ | ||
| + | |||
| + | <callout type=" | ||
| + | |||
| + | Затем необходимо опубликовать скрипт и обновить модель. После обновления данные из ADVANTA автоматически загрузятся в модель. | ||
| + | |||
| + | \\ | ||
| + | === Пример модели === | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | ==== 4) Создать виджеты для отображения данных и дашборды из виджетов ==== | ||
| + | |||
| + | Для реализации этих шагов необходимо ознакомиться с возможностями системы Analytic Workspace. В этом вам помогут [[https:// | ||
| + | |||
| + | === Пример дашборда «Здоровье портфеля» в Analytic Workspace на основе данных, | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | \\ | ||
| + | [[https:// | ||
| + | |||
| + | [[https:// | ||
| - | {{ : | ||