Свободный режим SQL-редактора (редактор со встроенным языком структурированных запросов)
Свободный режим SQL-редактора — это расширенная среда для написания запросов, предназначенная для опытных аналитиков и разработчиков, глубоко знающих SQL и специфику СУБД ClickHouse. Режим снимает ограничения в стандартном редакторе SQL, предоставляя полный контроль над структурой и логикой SQL-запроса.
Ключевые особенности и отличия от стандартного режима
-
Полный контроль над запросом
- Отсутствие автоматической обёртки: Система не добавляет конструкции
SELECT ... FROM. Вы пишете запрос целиком, начиная сWITH(CTE) илиSELECT. - Произвольная структура: Доступно использование любых SQL-конструкций:
WITH(CTE), вложенные подзапросы в любой части запроса, сложныеJOIN. - Прямая работа с функциями ClickHouse: Полный доступ ко всем встроенным и агрегационным функциям ClickHouse без каких-либо ограничений.
- Возможность использования любых оконных функций: доступны все функции предусмотренные ClickHouse. Их использование не ограничено отсутствием возможности применения
DISTINCTв секцииSELECT. - Возможность использования функционала массивов: поддерживается весь функционал массивов
ARRAYи функций для работы с ними. - Ограничение вывода результатов запроса: свободное использование
LIMITиOFFSET.
- Отсутствие автоматической обёртки: Система не добавляет конструкции
-
Предназначение для сложных задач
- Режим идеально подходит для реализации комплексной бизнес-логики, многоэтапных расчётов, прототипирования запросов для дашбордов (отчётов) и глубокой аналитики данных, требующей максимальной гибкости.
-
Требования к пользователю
- Обязательное знание SQL (язык структурированных запросов): Пользователь должен самостоятельно обеспечивать корректность синтаксиса и логики запроса.
- Понимание модели данных: Необходимо точно знать структуру таблиц, имена полей и типы данных, так как автоматическая подстановка полей из "Карты модели" может быть ограничена в зависимости от сложности написанного запроса.
- Ответственность за производительность: Пользователь самостоятельно оптимизирует запрос, учитывая особенности ClickHouse. Некорректные или тяжелые запросы могут влиять на производительность системы.
-
Ограничения режима
- Только
SELECTзапросы: запрещены запросыINSERT,DELETE,DROPи иные в целях безопасности хранилища данных. Помимо этого, обращаться в запросе можно только к базе данных, связанной с текущим проектом.
- Только
Общий вид расширенного SQL редактора
Переключиться в Свободный режим SQL можно при создании или редактировании показателей через стандартный SQL-редактор. Система запросит подтверждение, так как после активации этого режима возврат к стандартному интерфейсу для данного показателя будет невозможен без переписывания логики.

В свободном режиме, как и в стандартном, осуществляется проверка синтаксиса запроса. В случае выявлении ошибки появляется информация о самой ошибке, а также в интерфейсе подсвечивается место, где допущена ошибка.

В случае, если Вы допустили ошибку, либо не закончили писать Ваш запрос, есть возможность сохранить результат и вернуться к редактированию позже.
Когда написание запроса окончено без ошибок, в правой части интерфейса появится автоматическое разделение результата выполнения запроса на разрезы и показатели.

Карта модели
Для упрощения работы в расширенный редактор встроена карта модели данных, аналогичная стандартному редактору:
- Отображает все доступные поля таблиц;
- Оснащена поиском;
- Позволяет вставить нужное поле в текст запроса одним кликом.
Взаимодействие с фильтрами дашборда
Если у фильтра в настройках включено влияние на визуальный компонент, созданный с помощью расширенного редактора SQL, то условие фильтрации будет добавлено в SQL запрос в секцию WHERE основной части запроса автоматически. На это стоит обращать внимание, например, если в своем запросе пользователь не использует таблицу, по которой осуществляется фильтрация, это приведет к ошибке.
Пример, показывающий ошибочный запрос в результате фильтрации по таблице sales, которая не используется в самом запросе:
WITH
test_cte AS (
(
SELECT
456 AS y
)
)
SELECT
x.x as x,
y.y as y
FROM
(
SELECT
arrayJoin ([123, 789]) AS x
) AS x
CROSS JOIN test_cte AS y
WHERE
sales.event_date BETWEEN '2025-01-07' AND '2025-01-08'
В таком случае стоит отключать влияние фильтра на данный визуальный компонент.
Пример использования
В стандартном режиме Вы вводите только выражение для поля, например:
sumIf(amount, event_type = 'purchase')
В Свободном режиме Вы создаёте полноценный запрос, например:
WITH user_sessions AS (
SELECT
user_id,
session_id,
sumIf(amount, event_type = 'purchase') as revenue,
max(created_at) as last_event
FROM events
WHERE created_at >= today() - 7
GROUP BY user_id, session_id
)
SELECT
us.user_id as user_id,
count() as sessions_count,
sum(us.revenue) as total_revenue,
any(users.segment) as user_segment
FROM user_sessions us
LEFT JOIN dim_users users ON us.user_id = users.id
WHERE revenue > 0
GROUP BY us.user_id
ORDER BY total_revenue DESC
Особенности использования с разными типами визуальных компонентов
-
Круговые, линейный и столбчатые диаграммы. Важен порядок указания разрезов и показателей в основной секции запроса.
SELECT
category_id as category,
product_id as product,
SUM(revenue) as sum_revenue,
count(*) as total_rows
FROM
sales
GROUP BY
category_id,
product_idДанный пример создаст два разреза - по категории и по товару. Разрез идентифицируется системой по наличию поля в секции
GROUP BY. Также, будут созданы два показателя - сумма продаж, и кол-во заказов(кол-во строк в таблице).
Если изменить порядок разрезов, это может привести к нарушению логики Drill-Down, когда пользователь будет сначала выбирать товар, а затем видеть категорию товара. -
Таблицы. На данный момент существует два ограничения применения свободного режима SQL в данных видах визуальных компонентов: отсутствует возможность выбора разреза в шапке таблицы и группировки в виде раскрывающихся строк. Визуально в таблице разрезы и показатели выводятся в том же порядке, что и в основной части запроса SQL.
-
Диаграмма Ганта. На данный момент в виду специфики данного типа визуальных компонентов, свободный режим SQL-редактора не доступен.
Важное примечание
Используйте этот режим для реализации максимально сложной и специфической логики, когда возможностей стандартного редактора SQL недостаточно.
