Skip to content

SQL-блок ​

Кроме таблиц в датасет можно добавить SQL-блок — произвольный запрос, результат которого участвует в датасете наравне с таблицей. Так берут данные, которых нет в источнике готовыми: предварительную агрегацию, объединение через UNION, нестандартный расчёт.

  1. Нажмите Создать SQL-блок внизу левой панели.
  2. Задайте Название — под ним блок будет виден на холсте и в списке таблиц.
  3. Напишите запрос в поле SQL-запрос. Редактор подсвечивает синтаксис, нумерует строки и подсказывает ключевые слова и объекты базы, а слева стоит дерево таблиц источника, чтобы свериться с именами.
  4. Нажмите Превью и проверьте результат: колонки с типами и первые строки. Чтобы выполнить только часть запроса, выделите её перед нажатием.
  5. Нажмите Создать — блок появится на холсте, а колонки результата станут его полями.

Окно SQL-блока с результатом превью

Диалект — тот же, что у источника: запрос уходит в базу как есть.

Проверяйте запрос до создания

Кнопка Создать не проверяет запрос — она сохраняет его как есть. Нажмите Превью: если запрос ошибочный, вы увидите это сразу, а не при построении первого виджета.

Закрыть окно, не сохранив набранное, платформа не даёт молча. Если название или запрос меняли, Отмена, крестик, щелчок мимо окна и клавиша Esc открывают вопрос «Закрыть без сохранения? Внесённые изменения будут потеряны»: Продолжить редактирование возвращает в окно, Закрыть отбрасывает набранное.

Рядом с редактором есть AI-помощник — он пишет запрос по описанию задачи, см. AI-помощник.

На холсте SQL-блок отличается от таблицы значком <>, а в левой панели такие блоки собраны в отдельную группу SQL над списком таблиц источника. У блока три кнопки: звёздочка — сделать главным, карандаш — вернуться к редактированию запроса, крестик — убрать с холста.

SQL-блок на холсте и в списке

Связи для SQL-блоков не создаются сами

Таблицы платформа может связать по внешним ключам, а результат SQL-блока — нет: у запроса нет ключей. Если блок нужно соединить с другой таблицей, задайте связь вручную.

SQL-блок и режимы датасета ​

В режиме «Прямой запрос» запрос блока уходит в источник при каждом построении виджета: платформа подставляет его текст подзапросом в свой запрос. Диалект не переводится, поэтому блок работает только с тем источником, где заведён.

Данные при этом всегда свежие, но и нагрузка от каждого открытия виджета ложится на источник. Если запрос тяжёлый, а данные обновляются раз в сутки, выгоднее извлечение.

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

Тяжёлый запрос считается один раз за сборку

Если блок делает предварительную агрегацию по большой таблице, режим извлечения снимает эту работу с источника: запрос выполняется на сборке витрины, а не при каждом открытии виджета.

Что дальше ​

Результат SQL-блока участвует в датасете наравне с таблицей: его так же связывают с другими объектами и настраивают у него поля.