Skip to main content

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

Ссылка на источник задачи (п.4)

Концепция

Для редактирования типа данных в подключении (в скрипте загрузки) необходимо сначала подготовить функционал по определению подходящего типа данных для поля при загрузке. Если для загрузки из БД тип уже определен, то для загрузки из файла (н-р, Excel) на данный момент по умолчанию устанавливается String. При нажатии на заголовок столбца в таблице в подключении должен раскрываться список с доступными типами данных, где на первом месте будет стоять рекомендуемый (загруженный по метаданным из БД или файла). При выборе подходящего типа данных он фиксируется для указанного поля (и переносится в скрипт). При выборе неподходящего типа данных выдаётся ошибка.

Задание на разработку

При создании подключения в окне «Выбрать данные» (старом) и окне предварительного просмотра (новом) необходимо добавить двухуровневый или трехуровневый (в зависимости от доступных настроек) список с типами данных. НаДля каждом из урговней нажатием ЛКМ можно выбрать типа данных сдолжен быть предустановлен определеннымй тип настрой языкамие ClickHouse (подробнее в списке ниже), написанный сразу после типа на русском языке. Рядом должна быть кнопка, открывающее модальное окно с настройками, уникальными для каждомго из типов данных.

В каждом модальном окне есть 2 кнопки: "Отменить" (сбрасывает настройки типа и закрывает окно) и "Сохранить" (применяет к выбранному столбцу указанные в модальном окне настройки типа данных).

НаПо первозм уровжне находятся все основные типы данных с той иконкой, которая будет установлена при выборе. Текущий тип данных столбца должен быить выделенять заливкой. Ррекомендуемый тип данных (см. п.1.2) должен выделяться цветной обводкой.

Второй уровень открывается при наведении курсора на первый уровень. На нём должны быть типы данных на языке ClickHouse. При наличии возможности ввода дополнительных параметров (н-р, разрядности для Decimal) необходимо при нажатии на тип данных выводить поле для внесения этих параметров. 

Третий уровень открывается при наведении курсора на второй уровень. На нём должны быть дополнительные параметры, характерные для предыдущего уровня.

1. Список типов (x.x. – первый уровень списка; x.x.x. – второй уровень; «::» - поле для ввода дополнительных параметров, при отсутствии названия выводить только поле):

1.1. «Целое число» – целые числа разного размера. Предустановленный тип – Int64, при нажатии на поле выбирается Int64.именно На вэторомт уровне:

тип,

1.1.1. Int знаковые целые :: разрядность списоком (8, 16, 32, 64, 128, 256)закрывается. При нажатии на Intкнопку справа открывается модально окно со следующими настройками:

1.1.1. "Выберите тип" – список с 2 значениями: Int и UInt. По умолчанию установлен тип Int

1.1.2. "Выберите разрядность" список выбарианторав разрядности: 8, 16, 32, 64, 128, 256. По умолчавтоматническию устанаовливается Int64.

1.1.2. UInt – беззнаковые целые :: разрядность списком (8, 16, 32, 64, 128, 256). При нажатии на UInt без выбора разрядности автоматически устанавливается UInt64.64

 

image.png


1.2. «Вещественное число». Предустановленный тип – Float64, при нажатии на поле выбирается Float64.именно На вэторомт уровне:

тип,

1.2.1. Float32, Float64 – числа список плзакрывающей точкой, не имеют дополнительных параметров

1.2.2. Decimal – число с фиксированной точностьюя. При нажатии на кнопку справа открывается модальное окно со следующими настройками:

1.2.1. "Выберите тип" – список с 3 значениями: Float32, Float64 и Decimal. По умолчанию установлен тип Float64. При выбранном типе Decimal в модальном окне появляются 2 дополнительных полями ввода:

поле

1.2.2. « "Длина»" (максимальное количество цифр), по умолчанию пустое

поле «Разрядность» (количество цифр после запятой), обязательны для сохранения.

image.png

1.3. «Строковые типы». При нажатии выбирается String. На втором уровне:

1.3.1. String – строка произвольной длины для любого текста

1.3.2. FixedString – строка фиксированной длины. При нажатии открывается модальное окно с 1 полем ввода, в котором записан текст: "Введите максимальное количество знаков".

image.png

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 до 8)

1.5. «Логический тип» (принимает только значения True и False, а также их аналоги, н-р 1 и 0)

2. Рекомендуемый тип данных. При создании подключения к СУБД рекомендуемым является тот тип данных, который был указан в СУБД для рассматриваемого столбца. При создании подключения к файлу рекомендуемым является тот тип, который был определен автоматически (даже при смене типа данных установленный системой тип должен быть выделен в общем списке)

3. Ошибки. В случае выбора неподходящего типа данных должно выдавать ошибки (как пример):

1.4.3.1. "Невозможно перевести в указанный тип данных"

1.4.3.2. "Выбор типа данных с меньшим диапазоном, чем необходимо"

1.4.3.3."Неверный формат даты или времени" (нет функции автоматического приведения формата "DD.MM.YYYY" к "DD-MM-YYYY")

image.png