Платформа 3V/DataManager: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показано 37 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
{{DISPLAYTITLE: DataManager.Задачи загрузки данных}}
 
{{DISPLAYTITLE: DataManager.Задачи загрузки данных}}
DataManager - сервис по работе с загрузкой данных в объекты платформы 3V / объекты БД
+
DataManager - сервис по работе с загрузкой данных в объекты платформы 3V (справочники и показатели)
 +
 
 +
<div class="toccolours mw-collapsible" style="width:600px; background:#FFFFFF;">
 +
<div style="color:#CC2200">[[Платформа 3V/DataManager|<font style="color: #CC2200">Как работать с DataManager</font>]]</div>
 +
<div class="mw-collapsible-content">
 +
<div style="width:600px;">
 +
1. [[Платформа 3V/DataManager/Начало работы|<font style="color: #0645AD">Как начать работу с DataManager</font>]]
 +
</div>
 +
<div style="width:600px;">
 +
2. [[Платформа_3V/DataManager/Источник_данных|<font style="color: #0645AD">Как настроить источник данных для DataManager</font>]]
 +
</div>
 +
<div style="width:600px;">
 +
3. [[Платформа_3V/DataManager/Приемник_данных|<font style="color: #0645AD">Как настроить приемник данных для DataManager</font>]]
 +
</div>
 +
<div style="width:600px;">
 +
4. [[Платформа 3V/DataManager/Маппинг_справочников|<font style="color: #0645AD">Как настроить маппинг для справочника</font>]]
 +
</div>
 +
<div style="width:600px;">
 +
5. [[Платформа 3V/DataManager/Маппинг_показателей|<font style="color: #0645AD">Как настроить маппинг для показателя</font>]]
 +
<div style="width:600px;">
 +
6. [[Платформа_3V/DataManager/Частичное_очищение_данных_перед_загрузкой_в_справочник|<font style="color: #0645AD">Частичная очистка данных перед загрузкой в справочник</font>]]
 +
</div></div></div></div>
  
 
'''Цель:'''
 
'''Цель:'''
Строка 6: Строка 27:
 
* Снижение времени на выполнение интеграций с внешними источниками данных  
 
* Снижение времени на выполнение интеграций с внешними источниками данных  
 
'''Задачи:'''
 
'''Задачи:'''
* Передача данные из внешних источников в объекты платформы 3V
+
* Передача данных из внешних источников в объекты платформы 3V (справочники и показатели)
* Загрузка данные из задач Jira в объекты платформы 3V (Корпоративный портал использует его для загрузки данных из Jira (трудозатраты, задачи и т.д.))
+
* Загрузка данных из задач Jira в объекты платформы 3V (Корпоративный портал использует его для загрузки данных из Jira (трудозатраты, задачи и т.д.))
  
 
=== Методы ===
 
=== Методы ===
 
[https://3v.3v-group.net/data-manager-public/swagger/index.html#/ ''*на примере 3v-group.net'']
 
[https://3v.3v-group.net/data-manager-public/swagger/index.html#/ ''*на примере 3v-group.net'']
 +
 +
===== Методы, которые чаще всего нужны для работы с DM =====
 +
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
 
! Название !! Конроллер !! Описание  !! Результат
 
! Название !! Конроллер !! Описание  !! Результат
 
|-
 
|-
|[https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /Data/Load] || Data || Метод для загрузки данных в таблицу || Json-модель загруженных в таблицу данных
+
|[https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /Data/Load] || Data || Метод для загрузки данных в справочник/показатель || Результат загрузки (json-модель маппинга (об этом чуть позже)) или возникшая при загрузке ошибка
 +
|-
 +
|[https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_LoadFromFile /Data/LoadFromFile/LoadFromFile]|| Data || Метод для загрузки данных из файла || Json-модель результата загрузки данных из файла или возникшая при загрузке ошибка
 +
|}
 +
 
 +
===== Методы, которые реже всего нужны для работы с DM =====
 +
''(в некоторых проектах они нужны, но аналитики их почти не используют)''
 +
 
 +
{| class="wikitable"
 
|-
 
|-
|[https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_LoadFromFile /Data/LoadFromFile/LoadFromFile]|| Data || Метод для загрузки данных из файла || Json-модель результата загрузки данных из файла
+
! Название !! Конроллер !! Описание  !! Результат
Загрузка данных из файла в справочник
 
 
|-
 
|-
 
|[https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /DataConverter/ConvertXmlToJson] || DataConverter  
 
|[https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /DataConverter/ConvertXmlToJson] || DataConverter  
Строка 40: Строка 71:
 
|| Метод для копирования данных показателя || Json-модель скопированных данных показателя
 
|| Метод для копирования данных показателя || Json-модель скопированных данных показателя
 
|-
 
|-
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /DataLoader/LoadTableData] || DataLoader || Метод для загрузки данных в таблицу || Json-модель загруженных в таблицу данных
+
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/DataLoader/DataLoader_LoadTableData /DataLoader/LoadTableData] || DataLoader || Метод для загрузки данных в таблицу || Json-модель загруженных в таблицу данных
 
|-
 
|-
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /Data/Load] || /DataLoader/LoadDictionaryData || Метод для загрузки данных в справочник || Json-модель загруженных в справочник данных
+
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/DataLoader/DataLoader_LoadDictionaryData /DataLoader/LoadDictionaryData] || DataLoader || Метод для загрузки данных в справочник || Json-модель загруженных в справочник данных
|-
 
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /Kafka/Push] || Kafka
 
''(дополнительный функционал)''
 
|| Метод для передачи данных от сервера клиенту || Json-модель результата передачи данных
 
|-
 
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /Kafka/PushTest] || Kafka
 
''(дополнительный функционал)''
 
|| Тестовый метод для передачи данных от сервера клиенту || Json-модель результата передачи данных
 
|-
 
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load /Kafka/Pull] || Kafka
 
''(дополнительный функционал)''
 
|| Метод для передачи данных от клиента, ответ порождается сервером || Json-модель результата передачи данных
 
 
|-
 
|-
 
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/Installer/Installer_Install /Installer/Install] || Installer || Метод для установки объектов DataManager:
 
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/Installer/Installer_Install /Installer/Install] || Installer || Метод для установки объектов DataManager:
Строка 71: Строка 90:
 
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/TaskManager/TaskManager_NextTask /TaskManager/NextTask] || TaskManager || Метод для получения информации по задаче || Json-модель задачи
 
| [https://3v.3v-group.net/data-manager-public/swagger/index.html#/TaskManager/TaskManager_NextTask /TaskManager/NextTask] || TaskManager || Метод для получения информации по задаче || Json-модель задачи
 
|}
 
|}
 +
 
=== Объекты репозитория ===
 
=== Объекты репозитория ===
'''DataManagerTasks - Задачи загрузки данных'''
+
===== DataManagerTasks - Задачи загрузки данных =====
 +
 
 +
Это справочник, который содержит задачи загрузки данных
 +
 
 +
[[Файл:справочник задач загрузки данных.png|1000px]]
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Название !! Код !! Тип данных
 +
|-
 +
| Наименование || NAME || Строка
 +
|-
 +
| Настройки загрузки || OPTIONS || Строка
 +
|-
 +
| Дата последнего запуска || BEGIN_DATE || Дата
 +
|-
 +
| Дата следующего запуска || NEXT_DATE || Дата
 +
|-
 +
| Периодичность запуска (сек.) || COOLDOWN  || Целое число
 +
|-
 +
| Описание || DESCRIPTION || Длинный текст
 +
|}
  
* NAME - наименование задачи
+
===== DataManagerTasksResults - Результаты загрузки данных =====
* OPTIONS - Json настройка с описанием источника, приемника, перекодировки данных
 
* BEGIN_DATE - дата последнего запуска
 
* NEXT_DATE - дата следующего запуска
 
* COOLDOWN - периодичность запуска
 
* DESCRIPTION - описание задачи
 
  
'''DataManagerTasksResults - Результаты загрузки данных'''
+
Это справочник, который содержит результат загрузки данных
 +
[[Файл:результат.png|1000px]]
  
* RESULT - результат выполнения экземпляра задачи
+
{| class="wikitable"
* STATUS - статус выполнения
+
|-
* BEGIN_DATE - дата начала
+
! Название !! Код !! Тип данных
* END_DATE - дата завершения
+
|-
* TASK - сама задача загрузки данных
+
| Наименование || NAME || Строка
 +
|-
 +
| Статус || STATUS || Строка
 +
|-
 +
| Дата начала || BEGIN_DATE || Дата
 +
|-
 +
| Дата завершения || END_DATE || Дата
 +
|-
 +
| Результат || RESULT  || Длинный текст
 +
|-
 +
| Задача || TASK || Элемент справочника задач загрузки данных
 +
|}
  
 
=== Источники данных ===
 
=== Источники данных ===
Строка 124: Строка 172:
  
 
=== Целевая схема использования ===
 
=== Целевая схема использования ===
[[Файл:DM- Целевая схема.png|слева|1000px|border]]
+
[[Файл:DM- Целевая схема.png|1000px]]
 +
 
 +
=== Модель DataManager ===
 +
<syntaxhighlight lang="JSON" line>
 +
"Source": {
 +
        "discriminator": "UrlDataManagerSource",
 +
        "Uri": "",
 +
            "Credentials": "",
 +
            "Headers": ""
 +
      },
 +
"Destination": {
 +
                "discriminator": "",
 +
                "SaveMode": "Postgres",
 +
                "mapperOptions": [ {}, {}],
 +
                "expressions": [{}],
 +
                "clearData": false,
 +
                "dictionaryIdent": ""
 +
              }
 +
</syntaxhighlight>

Текущая версия на 08:41, 12 декабря 2022

DataManager - сервис по работе с загрузкой данных в объекты платформы 3V (справочники и показатели)

Цель:

  • Организация загрузки данных из внешних источников без привлечения разработчиков
  • Снижение времени на выполнение интеграций с внешними источниками данных

Задачи:

  • Передача данных из внешних источников в объекты платформы 3V (справочники и показатели)
  • Загрузка данных из задач Jira в объекты платформы 3V (Корпоративный портал использует его для загрузки данных из Jira (трудозатраты, задачи и т.д.))

Методы

*на примере 3v-group.net

Методы, которые чаще всего нужны для работы с DM
Название Конроллер Описание Результат
/Data/Load Data Метод для загрузки данных в справочник/показатель Результат загрузки (json-модель маппинга (об этом чуть позже)) или возникшая при загрузке ошибка
/Data/LoadFromFile/LoadFromFile Data Метод для загрузки данных из файла Json-модель результата загрузки данных из файла или возникшая при загрузке ошибка
Методы, которые реже всего нужны для работы с DM

(в некоторых проектах они нужны, но аналитики их почти не используют)

Название Конроллер Описание Результат
/DataConverter/ConvertXmlToJson DataConverter

(дополнительный функционал)

Метод для преобразования данных из формата XML в Json Json-модель результата преобразования данных
/DataConverter/ConvertCsvToJson DataConverter

(дополнительный функционал)

Метод для преобразования данных из формата CSV в Json Json-модель результата преобразования данных
/DataConverter/ConvertExcelToJson DataConverter

(дополнительный функционал)

Метод для преобразования данных из формата Excel в Json Json-модель результата преобразования данных
/DataCopier/CopyDictionaryElement/CopyDictionaryElement DataCopier

(дополнительный функционал)

Метод для копирования элемента справочника Идентификатор нового элемента справочника
/DataCopier/CopyIndocatorData/CopyIndicator DataCopier

(дополнительный функционал)

Метод для копирования данных показателя Json-модель скопированных данных показателя
/DataLoader/LoadTableData DataLoader Метод для загрузки данных в таблицу Json-модель загруженных в таблицу данных
/DataLoader/LoadDictionaryData DataLoader Метод для загрузки данных в справочник Json-модель загруженных в справочник данных
/Installer/Install Installer Метод для установки объектов DataManager:
  • FirstInstallTechObjects
  • DataManagerTasks
  • DataManagerTasksResults
Json-модель результата установки объектов DataManager
/LogManager/CheckCompleteTaskLog LogManager Метод для проверки задачи на завершение и формирования логов и статистики Json-модель результатов проверки и формирования логов и статистики
/LogManager/AddTaskResult LogManager Метод для добавления результата задачи для ведения статистики и логирования Json-модель результатов добавления задачи
/LogManager/CompleteTaskLog LogManager Метод для формирования логов и статистики по задаче Json-модель результатов формирования логов и статистики
/TaskManager/NextTask TaskManager Метод для получения информации по задаче Json-модель задачи

Объекты репозитория

DataManagerTasks - Задачи загрузки данных

Это справочник, который содержит задачи загрузки данных

справочник задач загрузки данных.png

Название Код Тип данных
Наименование NAME Строка
Настройки загрузки OPTIONS Строка
Дата последнего запуска BEGIN_DATE Дата
Дата следующего запуска NEXT_DATE Дата
Периодичность запуска (сек.) COOLDOWN Целое число
Описание DESCRIPTION Длинный текст
DataManagerTasksResults - Результаты загрузки данных

Это справочник, который содержит результат загрузки данных результат.png

Название Код Тип данных
Наименование NAME Строка
Статус STATUS Строка
Дата начала BEGIN_DATE Дата
Дата завершения END_DATE Дата
Результат RESULT Длинный текст
Задача TASK Элемент справочника задач загрузки данных

Источники данных

  • files
  • dbase
  • https

Поддерживаемые форматы для предоставления данных - JSON, XML, CSV, XLSX

Приемники данных

  • Справочники (методы записи -platform API, DB script, - задается в настройках задачи);
  • Показатели (методы записи - DB script, - задается в настройках задачи);
  • Таблица DB (методы записи - DB script, - задается в настройках задачи).

Логика работы

Producer (host)

  • Producer опрашивает все тенанты указанные в конфигурационном файле;
  • Рассчитывает задачу и ее параметры;
  • Предоставляет интерфейс для получения задачи consumer-ом.

Задачи берутся по очереди из каждого тенанта с одним набором параметров. Т.е. в рамках тенанта задачи выполняются по очереди, в рамках сервиса каждая следующая задача берется из следующего тенанта. (из навигаторе берется самый первый справочник справочника Задачи загрузки данных

Consumer

  • После запуска consumer обращается к producer;
  • Получает от него модель задачи с параметрами на выполнение;
  • После выполнения задачи, независимо от результата, запрашивает новую задачу для выполнения;
  • Результат выполнения задачи записывается в справочник с результатами выполнения задач.

DataMapper

Сервис который занимается преобразованием данных.

  • Приводит все данные к формату json;
  • Исходя из настроек маппинга, разворачивает json в плоский (табличный) вид;
  • Выполняет загрузку данных в зависимости от метода записи (api / sql)
  • Поддерживает выражения

Целевая схема использования

DM- Целевая схема.png

Модель DataManager

 1 "Source": {
 2 	        "discriminator": "UrlDataManagerSource",
 3 	        "Uri": "",
 4             "Credentials": "",
 5             "Headers": ""
 6 	      },
 7 "Destination": {
 8                  "discriminator": "",
 9                  "SaveMode": "Postgres",
10                  "mapperOptions": [ {}, {}],
11                  "expressions": [{}],
12                  "clearData": false,
13                  "dictionaryIdent": ""
14                }