Skip to main content

Импорт данных из коннектора

Пользовательские сценарии

Стартовое состояние – пользователь находится в диспетчере данных, загружен список источников

Действие: Пользователь нажимает на "доступный" источник

Результат 1 (если у источника нет ошибок – "status" = "success"):

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

Результат 2 (если у источника возникла ошибка при пройденной проверке на валидность – "status" = "aborted"):

  • Открывается окно выбора таблиц из источника
  • Система выдаёт ошибку, полученную при загрузке источника (поле "message")
  • В левой части окна отсутствует список источников
  • Область просмотра табличной части пустая

Действие: Пользователь нажимает на "сломанный" источник

Результат (аналогичен доступному источнику с ошибкой):

  • Открывается окно выбора таблиц из источника
  • Система выдаёт ошибку, полученную при загрузке источника (поле "message")
  • В левой части окна отсутствует список источников
  • Область просмотра табличной части пустая

Действие: Пользователь нажимает на "занятый" источник

Результат:

  • Открывается окно со статусом загрузки в процентах
  • До окончания загрузки невозможно просмотреть табличные данные
  • По окончанию загрузки источник получает статус "доступен" или "сломан"

image.png

Стартовое состояние – открыта область выбора данных из источника

Действие: Пользователь нажимает на таблицу в списке

Результат: В области просмотра данных появляется таблица с данными

Действия:

  • Пользователь меняет тип данных поля
  • Пользователь выбирает/исключает из выбора столбец/таблицу
  • Пользователь меняет алгоритм генерации скрипта (Drop/Alter)

Результат:

  • Изменения фиксируются в интерфейсе
  • До подтверждения загрузки никаких взаимодействий с бэкендом не происходит

Действие: Пользователь нажимает на кнопку "Далее"

Результат: Формируется скрипт загрузки из указанных таблиц с указанными столбцами в указанных типах данных по указанному алгоритму

Схема потока данных

 

Необходимые изменения

Добавить Чекбокс "Исключить пустые столбцы"

Добавить Статистику по столбцам

Схема потока данных

Техническое описание

1. При нажатии на коннектор из списка в левой панели клиентская часть отправляет на сервис Nest.js GET запрос на получение соответствующих таблиц коннектора

https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v2/source/{sourceId}/tables, где sourceId - id выбранного коннектора

Список доступных таблиц получается путём запроса метаданных источника из бд postgres

Результат отображается в левой панели "Таблицы источника"

image.png

2. При выборе таблицы из списка "Таблицы источника" отправляются GET запросы Meta + Preview:

Meta - содержит метаданные по выбранной таблице (тип драйвера, количество записей, название таблицы, id таблицы)

{
    "kind": "sourceTableMeta",
    "sourceTableMeta": {
        "sourceId": "3ad0c9f4-5a92-4aa8-8776-1e5b3f0098e3",
        "tableName": "Tablitsa",
        "rowCount": 99,
        "driverType": "xlsx"
    }
}

https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v2/source/{sourceId}/table/Tablitsa/meta

Preview - содержит фактические данные для отображения превью клиенту, всю информацию по колонкам таблицы и некоторое количество записей

https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v2/source/{sourceId}/table/Tablitsa/preview

Данные получают путём запроса метаданных коннектора из бд postgres, поиска источника по этим метаданным на стороне сервера и дальнейшего форматирования результата запроса для отправки ответа клиентской части

Результат:

image.png

3. Драйверы. Тип драйверов:

  • clickhouse
  • csv
  • hive
  • json
  • ms
  • my
  • oracle
  • postgres
  • qvd
  • rest-api
  • txt
  • xlsx
  • xml

Каждый тип драйвера наследуется от класса DriverDatabase и реализует интерфейс IDriver

Это гарантирует, что драйвер реализует необходимые методы, такие как:

  • getCredentialsInstance - получение данных для подключения к драйверу (если требуются)
  • getRowCount - получение общего числа записей в источник
  • getDbMeta - получение метаинформации по бд (список таблиц в источнике, с краткой информацией по каждой)
  • getPreview2 - получение превью бд (ограниченное количество строк + список столбцов)
  • query - выполнение любого запроса относящегося к источнику
    и др.
4. Смена названий и типов столбцов таблицы данных инициируется на клиентской части приложения, без создания дополнительных запросов к сервису Nest.js (см. скриншот ниже). Изменения будут учтены после продолжения импорта данных и нажатия на кнопку "далее". 

image.png

Изменённое поле будет отражено в скрипте загрузки в разделе @@Create создания базы данных clickhouse

image.png

5. Создание скрипта загрузки 

Нажатие на кнопку далее инициирует процесс формирования скрипта загрузка на основе обновленной информации

image.png

Процесс состоит из двух последовательных запросов:
а) Обновлённая структура таблицы загружается на сервис Nest.js с помощью POST запроса:
https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/script/{projectId}/table, где projectId - id проекта

image.png

Ответ (подтверждение успешного выполнения операции - "Ok"):

image.png

б) Для отображения скрипта загрузки на клиентской части выполняется GET запрос:
https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/script/{projectId}, где projectId - id проекта

Ответ:
список страниц с кодом скрипта загрузки для обновления ui клиентской части

image.png