Targetprocess

Targetprocess

Ноутбуки, используемые в примере:


В данной статье рассматривается пример получения данных с системы Targetprocess https://www.targetprocess.com. Targetprocess - очень мощная и сложная система со своей встроенной аналитикой, поэтому здесь будет только маленький кусочек, а именно получение реквестов с типом “ошибка” и информации по ним. Ниже пример таблицы на выходе, которая будет загружаться в платформу.

 

Здесь не рассматривается:


Сначала необходимо внимательно ознакомиться с описанием работы библиотеки python для Targetprocess :https://github.com/magicjohnson/targetprocess-client , а также с API Targetprocess https://dev.targetprocess.com/docs/rest-getting-started.

 

Теперь можно приступать к работе в JupyterLab.

  1. Создаем новый ноутбук.

  2. Первым блоком подключаем все необходимые нам для работы Python библиотеки:

    import petl as etl from targetprocess.api import TargetProcessAPIClient from targetprocess.serializers import TargetProcessSerializer

     

  3. Вторым блоком подключаемся к Targetprocess , используя адрес своего портала, логин и пароль.

    tp = TargetProcessAPIClient(api_url='https://name.tpondemand.com/api/v1/', user='user@site.com', password='123')

     

  4. Получаем нужные нам данные по релизам и второй строчкой сразу вытаскиваем из них список, содержащий данные непосредственно по релизам.

    request_json = tp.get_collection(collection="Release", take = 1000,include="[Name,StartDate,EndDate,Project]" ) ListJson = TargetProcessSerializer.deserialize(request_json)

     

  5. В следующих строках:

    1. формируем таблицу petl из списка,

    2. создаем новый столбец “Type” из данных столбца “Project”,

    3. удаляем столбец “Project”,

    4. Убираем все ненужные нам данные по полям “Type” и “Priority Backlog”.

      Rtable1 = etl.fromdicts(ListJson, header=['Name','StartDate', 'EndDate','Project']) Rtable2 = etl.addfield(Rtable1, 'Type', lambda row: row['Project']['Name']) Rtable3 = etl.cutout(Rtable2, 'Project') Rtable4 = etl.select(Rtable3,lambda rec: rec.Type != 'Flipbox' and rec.Name != 'Priority Backlog')

       

  6. После преобразование данных по релизам с помощью petl снова кладем их в список.

    RList = etl.dicts(Rtable4) ReleaseList = list(RList)

     

  7. Получаем нужные нам данные по реквестам и второй строчкой сразу вытаскиваем из них список, содержащий данные непосредственно по ним.

    request_json2 = tp.get_collection(collection="Requests", take = 1000000000,include="[Id,Name,RequestType,CreateDate]") ListJson2 = TargetProcessSerializer.deserialize(request_json2)

     

  8. В следующих строках:

    1. формируем таблицу реквестов petl из списка реквестов,

    2. создаем новый столбец “Type” из данных столбца “RequestType”,

    3. удаляем столбец “RequestType”,

    4. оставляем только записи с типом “Ошибка”.

    Rqtable1 = etl.fromdicts(ListJson2, header=['Id','CreateDate', 'RequestType', 'Name']) Rqtable2 = etl.addfield(Rqtable1, 'Type', lambda row: row['RequestType']['Name']) Rqtable3 = etl.cut(Rqtable2, 'Id', 'CreateDate','Name','Type') Rqtable4 = etl.select(Rqtable3,lambda rec: rec.Type == 'Ошибка')

     

  9. Добавляем в таблицу по реквестам Rqtable4 новое поле и вносим туда соответствующий релиз. После приводим название релиза к конечному виду.

    table5 = etl.addfield(Rqtable4, 'Release', lambda row: [ r['Name'] for r in ReleaseList if (r['StartDate']<row['CreateDate']<r['EndDate'])]) table6 = etl.convert(table5,'Release', lambda v:v[0] if v==v else '' )

     

  10. Экспортируем в Excel.

    etl.toxlsx(table6,'BugListWithRelease.xlsx')

     

Полученные файлы можно брать и загружать в платформу через стандартный загрузчик. На этом работа в ViXtract завершена.