Редактор скрипта загрузки
Скрипт загрузки генерируется автоматически после выбора источников данных и запуска импорта.
Этап ручного редактирования скрипта загрузки является необязательным, однако функциональность Fastboard позволяет при необходимости внести изменения.
Примеры использования редактора
Добавить источник
Шаги |
Ожидаемый результат |
В любом месте скрипта добавить строку Source "Название коннекта"
где:
- Source - ключевое слово обозначающее вставку новго конекта,
- "Название источника" - имя коннекта из списка источников
|
- При вставке кода для импорта таблиц из этого источника таблицы успешно загрузятся в БД проекта
|
Добавить таблицу из источника
Шаги |
Ожидаемый результат |
- Объявить название таблицы:
Table "Car"
- Определить и указать скрипту список полей новой таблицы. Для этого:
- Описать секцию Create (для создания таблицы в Clickhouse(КХ), в которую запишутся данные из таблицы-источника):
Create @@@ - начало секции парсера CREATE TABLE IF NOT EXISTS - команда КХ на создание таблицы "id" String NULL, - поле таблицы, в которое будет записано значение из источника: "название поля" / тип данных / может ли быть пустым (если нет, not null) "createdAt" DateTime64 (6) NULL, "updatedAt" DateTime64 (6) NULL, ) ENGINE = MergeTree () ORDER BY tuple () @@@ - конец секции парсера
- Описать секцию Delete (для удаления временной таблицы):
Delete @@@ ALTER TABLE "Car" DELETE WHERE 1=1 @@@
- Описать секцию Read (Для выбора полей из таблицы-источника:
Read @@@ - начало секции парсера SELECT - команда КХ на выбор полей "id"::text, - поле таблицы, которое будет взято из источника. "название поля" / тип данных. Для избежания ошибок при импорте всем полям данной секции прописывается тип ::text "createdAt"::text, "updatedAt::text, FROM "Car" - таблица источника @@@ - конец секции парсера
- Описать секцию Write
Write @@@ - начало секции парсера INSERT INTO - команда КХ на вставку данных созданную в КХ "Car" ( "id", "createdAt", "updatedAt" ) @@@ - конец секции парсера
- Убедиться что каждое поле импорта имеет одинаковое название в секциях Create, Read, Write
- Нажать кнопку «Сохранить». Для сохранения изменений в тексте скрипта
- Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки
|
- Добавленная таблица появилась в списке доступных на странице модели данных проекта
- Новая таблица содержит все поля указанные в скрипте загрузки
- Новая таблица может быть использована в модели данных
|
Удалить таблицу
Шаги |
Ожидаемый результат |
- Удалить строку объявляющую таблицу
Table "Car"
- Удалить секции Create, Delete, Read, Write для этой таблицы
- Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта
- Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки
|
Удаленная таблица исчезла из списка таблиц на странице модели данных |
Добавить поле из таблицы источника в таблицу импорта
Шаги |
Ожидаемый результат |
- В список полей таблицы куда вставляем секции Create добавить строку:
"id" String NULL - "название поля" / тип данных / может быть пустым Null (если нет, not null)
- В список полей таблицы откуда импортируем для секции Read добавить строку с названием поля:
"id"::text - "название поля" / тип данных (всегда текст)
- В список полей данной таблицы в секции Write добавить строку с названием поля:
"id"
- Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта
- Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки
|
На странице модели данных в данной таблице появилось поле "id" с типом данных, указанным в секции Create |
Удалить поле из таблицы
Шаги |
Ожидаемый результат |
- В списке полей таблицы в секциях Create, Delete, Read, Write удалить необходимое поле
- Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта
- Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки
|
Удаленное поле исчезло таблицы на странице модели данных |
Изменить тип данных поля
Шаги |
Ожидаемый результат |
- В строке поля таблицы в секции Create изменить тип на один из поддерживаемых КХ: String, Int64, Float32 и т.д.
Полный список типов
- Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта
- Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки
|
Тип поля изменился в таблице |
Создать вычисляемое поле в таблице
Шаги |
Ожидаемый результат |
При импорте таблицы из источника перед вставкой таблицы в КХ можно создать поле которого нет в исходной таблице, но которое будет вычислено и создано на основе заданного выражения. Для этого:
- В список полей таблицы в секции Create добавить новую строку с названием, типом, null, например:
"field_name" Int32 NULL
- В секции Read добавить строку вида:
func::text as "field_name" , где func - вычисляемое выражение, например "field_name1" + "field_name2", ::text - тип данных (всегда текст), as "field_name" - алиaс поля
- В список полей данной таблицы в секции Write добавить строку с названием поля:
"field_name"
- Нажать кнопку «Сохранить». Для записи изменений в тексте скрипта
- Нажать кнопку «Запустить». Для старта импорта данных согласно сохраненному скрипту загрузки
|
В таблице появится поле с назначенным типом данных и рассчитанными по заданному выражению значениями |
Создать новую таблицу "Календарь"
Вставить в скрипт загрузки следующий текст(обратите внимание на комментарии), после выполнения скрипта загрузки выполнить JOIN таблицы Calendar к вашей таблице фактов.
Table "calendar"
Create @@@
CREATE TABLE IF NOT EXISTS
"calendar" (
"id" Int32 NULL,
"key_date" String NULL,
"date" Date32 NULL,
"index_day" Int32 NULL,
"day" String NULL,
"week" Int32 NULL,
"quarter" Int32 NULL,
"year" Int32 NULL,
"index_month" Int32 NULL,
"month" String NULL
) ENGINE = MergeTree ()
ORDER BY
tuple ()
@@@
Delete @@@
ALTER TABLE "calendar" DELETE WHERE 1=1
@@@
Source "promo_fb (RomanS)" -- Укажите любой существашующий источник, чтобы сохранить в него вашу таблицу
Read @@@
SELECT
a."id"::text,
a."key_date"::text,
a."date"::text,
a."index_day"::text,
a."day"::text,
a."week"::text,
a."quarter"::text,
a."year"::text,
a."index_month"::text,
a."month"::text
FROM
(
select distinct
row_number() over() as id,
date(date)::text as key_date,
date::date,
extract('isodow' from date) as index_day,
CASE
WHEN extract('isodow' from date) = 1 then 'ПН' -- Если нужно, укажите названия дней (и месяцев ниже)
WHEN extract('isodow' from date) = 2 then 'ВТ'
WHEN extract('isodow' from date) = 3 then 'СР'
WHEN extract('isodow' from date) = 4 then 'ЧТ'
WHEN extract('isodow' from date) = 5 then 'ПТ'
WHEN extract('isodow' from date) = 6 then 'СБ'
WHEN extract('isodow' from date) = 7 then 'ВС' end as day,
extract('week' from date) as week,
extract('quarter' from date ) as quarter,
extract('year' from date) as year,
extract('month' from date) as index_month,
CASE
WHEN extract('month' from date) = 1 then 'Январь'
WHEN extract('month' from date) = 2 then 'Февраль'
WHEN extract('month' from date) = 3 then 'Март'
WHEN extract('month' from date) = 4 then 'Апрель'
WHEN extract('month' from date) = 5 then 'Май'
WHEN extract('month' from date) = 6 then 'Июнь'
WHEN extract('month' from date) = 7 then 'Июль'
WHEN extract('month' from date) = 8 then 'Август'
WHEN extract('month' from date) = 9 then 'Сентябрь'
WHEN extract('month' from date) = 10 then 'Октябрь'
WHEN extract('month' from date) = 11 then 'Ноябрь'
WHEN extract('month' from date) = 12 then 'Декабрь'end as month
from generate_series(date'2015-01-01',date(now()),interval '1 day')as t(date) -- Выберите дату начала и интервал
order by
date desc) a
@@@