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