Изменять тип данных при импорте
Ссылка на источник задачи (п.4)
Макет в фигме
Концепция
Для редактирования типа данных в подключении (в скрипте загрузки) необходимо сначала подготовить функционал по определению подходящего типа данных для поля при загрузке. Если для загрузки из БД тип уже определен, то для загрузки из файла (н-р, Excel) на данный момент по умолчанию устанавливается String. При нажатии на заголовок столбца в таблице в подключении должен раскрываться список с доступными типами данных, где на первом месте будет стоять рекомендуемый (загруженный по метаданным из БД или файла). При выборе подходящего типа данных он фиксируется для указанного поля (и переносится в скрипт). При выборе неподходящего типа данных выдаётся ошибка.
Задание на разработку
При создании подключения в окне «Выбрать данные» (старом) и окне предварительного просмотра (новом) необходимо добавить кнопку для изменения типов данных – она должна располагаться рядом с типом данных и появляться при наведении на него курсора мыши (в остальное время скрыта). При нажатии на эту кнопку должен открываться список со всеми типами данных.
Для каждого типа данных должен быть предустановлен определенный тип на языке ClickHouse (подробнее в списке ниже), написанный сразу после типа на русском языке.
Рядом должна быть кнопка, открывающее модальное окно с настройками, уникальными для каждого из типов данных.
В каждом модальном окне есть 2 кнопки: "Отменить" (сбрасывает настройки типа и закрывает окно) и "Сохранить" (применяет к выбранному столбцу указанные в модальном окне настройки типа данных).
По возможности стоит выделять рекомендуемый тип данных (см. п.2) цветной обводкой.
1. Список типов:
1.1. «Целое число» – целые числа разного размера. Предустановленный тип – Int32, при нажатии на поле выбирается именно этот тип, а список закрывается. При нажатии на кнопку справа открывается модально окно со следующими настройками:
1.1.1. "Выберите тип" – список с 2 значениями: Int и UInt. По умолчанию установлен тип Int
1.1.2. "Выберите разрядность" список вариантов разрядности: 8, 16, 32, 64, 128, 256. По умолчанию установлена разрядность 64
1.2. «Вещественное число». Предустановленный тип – Float64, при нажатии на поле выбирается именно этот тип, а список закрывается. При нажатии на кнопку справа открывается модально окно со следующими настройками:
1.2.1. "Выберите тип" – список с 3 значениями: Float32, Float64 и Decimal. По умолчанию установлен тип Float64. При выбранном типе Decimal в модальном окне появляются 2 дополнительных поля ввода:
1.2.2. "Длина" – максимальное количество цифр, по умолчанию пустое. Должна выполняться проверка и не приниматься любые другие символы, кроме чисел от 0 до 9.
1.2.3. "Разрядность" – количество цифр после запятой, по умолчанию пустое. Должна выполняться проверка и не приниматься любые другие символы, кроме чисел от 0 до 9.
1.3. «Строковые типы». Предустановленный тип – String, при нажатии на поле выбирается именно этот тип, а список закрывается. При нажатии на кнопку справа открывается модально окно со следующими настройками:
1.3.1. "Выберите тип" – список с 2 значениями: String, и FixedString . По умолчанию установлен тип String. При выбранном типе FixedString в модальном окне появляется дополнительное поле ввода:
1.3.2. Поле для ввода максимального числа знаков. По умолчанию в поле отображается надпись: "Введите максимальное кол-во знаков" – должна выполняться проверка и не приниматься любые другие символы, кроме чисел от 0 до 9.
1.4. «Дата и время». Предустановленный тип – Date, при нажатии на поле выбирается именно этот тип, а список закрывается. При нажатии на кнопку справа открывается модально окно с одним списком, в котором перечислены основные типы для дат:
1.4.1. Date – дата в диапазоне [1970-01-01, 2149-06-06]
1.4.2. Date32 – дата в четырех байтах, представляющим дни с 1970-01-01 (0 представляет 1970-01-01, а отрицательные значения представляют дни до 1970)
1.4.3. DateTime – дата и время в диапазоне [1970-01-01 00:00:00, 2106-02-07 06:28:15]
1.4.4. DateTime64 – момент времени с суб-секундной точностью в диапазоне [1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999]. Это единственный тип, при выборе которого появляется дополнительное поле для ввода:
1.4.4.1 "Точность тика" (с подписью "Введите число от 1 до 8") – должна выполняться проверка и не приниматься любые другие символы, кроме чисел от 1 до 8.
1.5. «Логический тип» – не имеет модального меню с дополнительными настройками
2. Рекомендуемый тип данных. При создании подключения к СУБД рекомендуемым является тот тип данных, который был указан в СУБД для рассматриваемого столбца. При создании подключения к файлу рекомендуемым является тот тип, который был определен автоматически (даже при смене типа данных установленный системой тип должен быть выделен в общем списке)
3. Ошибки. В случае выбора неподходящего типа данных должно выдавать ошибки (как пример):
3.1. "Невозможно перевести в указанный тип данных"
3.2. "Выбор типа данных с меньшим диапазоном, чем необходимо"
3.3."Неверный формат даты или времени" (нет функции автоматического приведения формата "DD.MM.YYYY" к "DD-MM-YYYY")
No Comments