Работа с базами данных
- Работа с базами данных
- SQL-запрос
- Выбрать строки через SQL-запрос
- Добавить строки
- Обновить строки
- Получить схему таблицы
- Получить системную таблицу
- Создать представление
- Создание представления
- Создать таблицу
- Поддерживаемые типы движков
- Создание таблицы
- Создание таблицы с настройками
- Удалить таблицу
- Переименовать таблицу
- Очистить таблицу
- Использование сессий
Работа с базами данных осуществляется с помощью блоков:
- SQL-запрос
- Выбрать строки через SQL-запрос
- Добавить строки
- Обновить строки
- Получить схему таблицы
- Получить системную таблицу
- Создать представление
- Создать таблицу
- Удалить таблицу
- Переименовать таблицу
- Очистить таблицу
В каждом блоке с SQL-запросом и в блоке Добавить строки можно подставить названия колонок с помощью визуального маппинга. В одном SQL-запросе могут быть указаны разные поля маппинга: те, что используются в безопасном режиме, и те, что его игнорируют. Чтобы отключить безопасный режим и подставить название колонки или таблицы в запрос, добавьте знак !
перед полем маппинга.
Отключение безопасного режима может привести к SQL-инъекциям. Применяйте этот функционал только в том случае, если вы полностью уверены в безопасности значений в используемых переменных.
SQL-запрос
С помощью запросов в блоке можно создавать, редактировать и удалять таблицы в базе данных, а также извлекать информацию из них.
У SQL-запроса обязательными параметрами являются запрос и подключение (при обращении к БД).
Пример удаления данных из таблицы с помощью запроса:
- Возьмем таблицу «phases».
- В скрипт добавим блок SQL-запрос и создадим запрос в соответствующем поле.
- Протестируем и вернемся в таблицу, чтобы убедиться, что данные удалены.
Выбрать строки через SQL-запрос
Блок позволяет создать произвольный SQL-запрос в определенный пакет.
Параметры блока:
- SQL-запрос — инструкции выбора
SELECT
- Limit — количество строк
- Offset — количество пропускаемых строк
- Order by — порядок строк/сортировать по
Добавить строки
Блок используется для заполнения и создания таблиц с использованием выходных данных предыдущих блоков.
Обязательные параметры блока:
- Подключение (при обращении к БД)
- Таблица — можно выбрать из списка или задать вручную
- Колонки (название, значение)
Чтобы автоматически заполнить поля данными, полученными в предыдущих блоках, нажмите Автозаполнение полей выходными данными. Подробнее об этой функции — в разделе Визуальный маппинг.
Чтобы избежать ошибки в ситуации, когда в данных встречается NULL-значение, но в колонке, куда оно подставляется, NULL не разрешен, активируйте переключатель Автоконвертация NULL-значений — в этом случае в колонке автоматически будет установлено значение по умолчанию.
Через редактор таблиц на левой панели вы можете изменять, добавлять и удалять колонки. Изменения влияют на таблицы в пространстве.
Чтобы создать таблицу:
- Кликните по полю Таблица и выберите Добавить таблицу.
- Выберите Создать вручную и заполните поля:
- Название таблицы
- Название колонки
- Тип данных
- Создать из выходных данных. Появляется список колонок из предыдущих блоков. Вы можете выбрать колонки по одной или отметить блок и автоматически выбрать все его колонки
- Для сохранения нажмите Добавить, чтобы отменить действие нажмите Отмена.
В этом блоке можно использовать визуальный маппинг.
Обновить строки
Блок обновляет информацию в таблицах с помощью маппинга.
Обязательные параметры блока:
- Подключение (при обращении к БД)
- Таблица
- Колонка-ключ — указывается колонка, по которой будут сравниваться значения
- Значение ключа — указывается значение колонки-ключа
- Новые значения колонок
Колонка-ключ и значение ключа помогают найти строки, которые нужно обновить. Если нужная строка не была найдена, но ее необходимо добавить в таблицу, активируйте переключатель Добавить ненайденные строки.
Чтобы избежать ошибки в ситуации, когда в данных встречается NULL-значение, но в колонке, куда оно подставляется, NULL не разрешен, активируйте переключатель Автоконвертация NULL-значений — в этом случае в колонке автоматически будет установлено значение по умолчанию.
После выбора таблицы для обновления строк вы можете автоматически подставить в ее колонки выходные данные предыдущих блоков. Подробнее об автозаполнении колонок выходными данными в разделе Визуальный маппинг.
Получить схему таблицы
Блок позволяет получить имя и схему конкретной таблицы базы данных.
В параметрах блока необходимо указать таблицу из базы данных. Выберите таблицу из списка или введите её название вручную.
По умолчанию выходные данные отображают данные первой строки по колонкам, имя и схему таблицы.
Получить системную таблицу
Блок предназначен для поставки в ClickHouse обновленных данных из системных таблиц. Необходимо выбрать доступную исходную системную таблицу и ее поля. Блок при каждом запуске возвращает все строки таблицы, а не только новые после предыдущего запуска.
Параметры блока:
- Таблица — выбрать из списка
- Колонки — можно выбрать любое количество колонок. Если не выбрано ни одной колонки, то автоматически считается, что выбраны все
- Должна быть выбрана таблица, иначе блок невозможно протестировать, а скрипт с этим блоком невозможно опубликовать.
- Для работы с блоком необходима привилегия Системные таблицы.
Описание полей системных таблиц, доступных для обновления через блок в скрипте автоматизации, представлено в разделе Системные таблицы.
Создать представление
Блок позволяет создавать представление в ClickHouse — специальную виртуальную таблицу, которая помогает упростить сложные запросы. Блок работает и в обычном, и в кластерном режиме ClickHouse.
Используйте блок, чтобы:
- Упростить работу с данными — можно один раз задать сложный SQL-запрос и затем обращаться к нему как к обычной таблице
- Повысить безопасность — представление позволяет скрыть сложную бизнес-логику и ограничить доступ к чувствительным данным, предоставляя пользователям только нужные колонки и строки
- Работать в любом режиме CLickHouse — блок позволяет создавать шаблоны пространств, которые работают одинаково как в обычном, так и в кластерном режиме без дополнительной настройки
С помощью блока можно создать два типа представлений:
- Обычное представление (View) — это виртуальная таблица. Она не хранит данные, а каждый раз при обращении выполняет заданный запрос и показывает его результат. Это помогает упростить работу с данными и ограничить доступ к ним
- Материализованное представление (Materialized view) — в отличие от обычного, сохраняет результат запроса в отдельной таблице. Такое представление позволяет быстро получать данные без повторного выполнения запроса и упрощает работу со сложными или часто используемыми вычислениями
Параметры блока:
- Тип представления:
- View
- Materialized view
- Тип действия:
- Создать новое представление —
create
- Создать, если не существует —
create if not exists
- Заменить, если существует (только для View) —
create or replace
- Создать новое представление —
- Название представления
- Select-запрос — для описания структуры колонок представления
- Целевая таблица — таблица, куда будут сохраняться данные (только для Materialized view)
- Комментарий
- Пользователь должен иметь доступ к таблицам, из которых берутся данные, и (если используется материализованное представление) — к таблице, куда они записываются.
- Чтобы обращаться к представлению, у пользователя должен быть доступ к самому представлению.
- При импорте скриптов с представлениями важно, чтобы у пользователя, запускающего скрипт, был доступ ко всем таблицам, которые участвуют в запросах внутри представления, иначе создание или использование представления завершится с ошибкой.
Создание представления
Настроим скрипт, который формирует отчет по продажам за текущий месяц.
Сначала в отдельном скрипте создадим представление, которое будет возвращать только данные за текущий месяц. Это позволит упростить другие скрипты — вместо фильтрации по дате можно будет обращаться к представлению:
- Добавим в скрипт блок Создать представление.
- В параметрах блока выберем тип представления — View.
- Выберем тип запроса — Создать или заменить.
- Зададим название представления —
current_month_sales
. - В поле Select-запрос добавим запрос:
SELECT * FROM sales WHERE toStartOfMonth(sale_date) = toStartOfMonth(today())
- Протестируем и опубликуем скрипт.
Теперь перейдем к настройке скрипта Сформировать отчет по продажам, который подготавливает отчет по продажам для бизнес-подразделения:
- Добавим в скрипт блок Выбрать строки через SQL-запрос.
- Укажем запрос, который будет получать данные за текущий месяц:
SELECT * FROM current_month_sales
- Добавим в скрипт два блока:
- Сформировать CSV — для преобразования данных в отчет
- Отправить письмо — для отправки готового файла заинтересованным сотрудникам
- Протестируем и опубликуем скрипт. Теперь при выполнении запроса будут возвращаться только данные за текущий месяц.
Создать таблицу
Блок Создать таблицу позволяет создавать таблицы в базе данных пространства.
Блок работает и в обычном, и в кластерном режиме ClickHouse.
Параметры блока:
- Тип действия — выберите запрос из списка:
- Создать
- Создать, если не существует
- Создать или заменить
- Название таблицы — укажите вручную или с помощью маппинга
- Колонки — создайте список колонок для таблицы, для каждой из которых задайте:
- Название колонки
- Тип данных — выберите из списка или укажите произвольный
- Order by — задайте порядок сортировки данных в таблице
- Partition by — настройте партиции таблицы
Блок не возвращает данные.
Чтобы работать с таблицей, созданной c помощью этого блока, подключите ее в модели данных.
Расширенный режим
Расширенный режим позволяет самостоятельно задать структуру таблицы через SQL. Параметры расширенного режима:
- Указать структуру таблицы — активируйте переключатель, чтобы открыть возможность задавать описание колонок
- Описание колонок — укажите колонки и индексы в формате SQL
- Select-запрос — введите запрос для заполнения таблицы или создания ее структуры (если переключатель Указать структуру таблицы не активирован)
- Движок таблицы — выберите движок, на котором будет работать таблица. При работе в кластерном режиме автоматически используется соответствующая Replicated-версия.
Движок таблицы
Поддерживаемые типы движков и их дополнительные параметры указаны в таблице ниже.
Поддерживаемые типы движков
Движок | Параметры движка | Обязательное | Описание |
---|---|---|---|
MergeTree | — | — | Базовый движок. Не требует дополнительных настроек |
ReplacingMergeTree | - Колонка ver - Колонка is_deleted | Нет | - ver — версия записи- is_deleted — колонка, содержащая 0 или 1 , где 1 означает, что запись помечена как удаленная |
SummingMergeTree | Колонки для суммирования | Нет | Список колонок через запятую. Если параметр не задан, суммируются все числовые колонки |
AggregatingMergeTree | — | — | Не требует дополнительных настроек |
CollapsingMergeTree | Колонка sign | Да | Колонка с типом Int8 , содержащая значения 1 или -1 . Определяет, какие записи должны быть «свернуты» |
VersionedCollapsingMergeTree | - Колонка sign - Колонка version | Да | - sign — колонка с типом Int8 , содержащая 1 или -1 - version — колонка, определяющая версию состояния записи |
Null | — | — | Вспомогательный движок. Таблица создается без хранения данных, подходит для тестов или заглушек |
Для всех движков MergeTree дополнительно доступны следующие параметры:
- Order by
- Partition by
- Primary key
- Sample by
- TTL
- Settings — задаются через список ключей и значений
Settings
Чтобы задать дополнительные параметры таблицы в разделе Settings, нажмите Добавить и укажите ключ и его значение.
Поддерживаются следующие параметры:
allow_nullable_key
— позволяет использовать Nullable-значения в первичных ключах. Доступные значения:0
(по умолчанию) — запрещает использование Nullable-типов в первичных ключах1
— разрешает Nullable-типы, что позволяет использовать NULL в первичных ключах
allow_experimental_json_type
:0
— отключено1
— включает поддержку типа JSON
log_queries
:0
— отключено1
— включает логирование запросов, выполняемых в таблице
Создание таблицы
- Выберем форму запроса Создать, если не существует.
- Подставим название таблицы в соответствующее поле с помощью маппинга.
- Добавим нужные колонки и зададим им названия и типы данных.
- В поле Order by укажем колонку, по которой таблица будет сортироваться.
- Протестируем блок.
- Блок выполнен успешно. Во вкладке Тест отображается соответствующее сообщение.
Создание таблицы с настройками
- Выберем форму запроса Создать.
- Зададим название таблицы users.
- Активируем переключатель Продвинутый режим.
- Включим переключатель Указать структуру таблицы. Это позволит вручную задать список колонок и индексов в формате SQL.
- В поле Описание колонок укажем структуру таблицы:
user_id Nullable(UInt32), username String, registration_date Date
- Поле Select-запрос оставим пустым.
- Выберем движок таблицы — MergeTree.
- Укажем поле Order by — user_id.
- Перейдем к разделу Settings. Нажмем Добавить и зададим параметр:
- Ключ — allow_nullable_key
- Значение — 1
user_id
с типом Nullable в качестве ключа сортировки. - Протестируем блок.
- Во вкладке Тест отображается информация об успешном выполнении блока.
- Теперь колонка
user_id
может содержать NULL, даже если она является частью первичного ключа - ClickHouse будет корректно индексировать и сортировать данные с учетом NULL-значений
- Можно выполнять запросы с NULL-значениями в условиях фильтрации по первичному ключу
Удалить таблицу
Используйте блок, чтобы удалять выбранные таблицы из базы данных пространства при работе в кластерном режиме.
В параметрах блока с помощью визуального маппинга укажите таблицу, которую необходимо удалить.
Блок не возвращает данные.
Переименовать таблицу
Используйте блок, чтобы переименовать таблицы в базе данных пространства при работе в кластерном режиме.
Параметры:
- Таблица (подставьте с помощью маппинга)
- Новое имя
Блок не возвращает данные.
Очистить таблицу
Используйте блок, чтобы очищать данные выбранных таблиц в базе данных пространства при работе в кластерном режиме.
В параметрах блока с помощью визуального маппинга укажите таблицу, в которой необходимо очистить данные.
Блок не возвращает данные.
Использование сессий
Для всех блоков пакетов Пространство и ClickHouse есть возможность активировать режим сессий, который позволяет отправлять запросы в ClickHouse в рамках сессии и предоставляет возможность работать с временными таблицами и параметрами.
По умолчанию режим сессий отключен. Чтобы активировать его, передвиньте переключатель в положение «включено». При включении сессия будет активирована на время, указанное в настройках подключения.
Время сессий у блоков пакета ClickHouse настраивается при создании подключения в пространстве.
Время сессий у блоков пакета Пространство указывается в настройках хранилища данных.
Блоки, для которых возможно использовать режим сессий:
- SQL-запрос
- Добавить строки
- Выбрать строки через SQL-запрос
- Обновить строки
- Получить схему таблицы
Была ли статья полезна?