Перейти к содержимому

Работать в SQL-редакторе

SQL-редактор — работа с вашими данными обычным SQL прямо в кабинете, без DBeaver и туннеля: вкладка «Данные», переключатель «SQL» рядом с заголовком.

Запрос выполняется ролью «клиент» — с теми же правами, что у этой роли в DBeaver: читать сырые данные (raw.events) и таблицы источников (sources.<имя>), править и удалять их строки, создавать свои таблицы, представления, материализованные представления, функции и индексы в схеме public и в своих схемах (create schema). Служебное платформы роли не видно. Что где лежит — Схемы и роли базы.

  • Каждый запрос выполняется сразу и фиксируется сам, как в DBeaver с автофиксацией. Запрос с ошибкой, остановленный или не уложившийся в срок откатывается целиком.
  • DELETE по таблице источника удаляет строки по-настоящему, но они уходят в корзину на 30 дней. После запуска редактор пишет, сколько строк ушло в корзину, со ссылкой на неё.
  • UPDATE необратим. Прежних значений корзина не хранит, а заново из сырых данных таблица не строится — исходное событие остаётся только в raw.events. После запуска редактор напомнит, сколько строк изменено.
  • Служебные столбцы (_event_id, _received_at, _channel, _meta) меняет только платформа — база ответит понятной ошибкой. Добавить строку в таблицу источника (insert) и очистить её truncate нельзя: строки рождают события, а очистка — кнопка «Очистить источник» с корзиной. Отказ базы редактор покажет как есть и объяснит рядом, что делать.
  • Свои таблицы и представления — ваши: drop и delete по ним идут без корзины.
  • Все строки таблицы — только с подтверждением. update или delete без where (или с where true) редактор выполнит, только когда вы подтвердите: окно назовёт таблицу и сколько в ней строк, по строке на каждый такой запрос выделения. По умолчанию в окне — «Отмена», и тогда не выполняется ничего — под запросом так и будет написано. Запрос с условием идёт сразу.
  • Ctrl+Enter (на Mac — ⌘ Enter) или кнопка «Выполнить» выполняют запрос под курсором. Запросы разделяются «;» и пустой строкой, как в DBeaver. Пустая строка внутри одного запроса его не режет — внутри скобок, после union all, and, запятой и между with … as (…) и основным select.
  • Выделили фрагмент — выполнится он. Несколько запросов в выделении идут по очереди, каждый фиксируется сам, первая ошибка останавливает остальные.
  • Один запрос идёт не дольше 30 секунд; пока идёт — тикает таймер, «Остановить» прерывает его сразу и откатывает.
  • Каждый запуск — отдельный сеанс: set и временные таблицы живут только внутри одного запроса. Команды вне транзакции (vacuum, create index concurrently) и долгие операции — в DBeaver.
  • Поле «Строк» — сколько строк результата показать: по умолчанию 1000, до 10 000. Режется только показ: итоги и подзапросы считаются по всем данным, а delete … returning * удаляет все строки, даже если показаны не все.
  • Слева — то, что видит роль клиента, по схемам: таблицы источников (под именем источника; имя для запроса — серой строкой ниже, справа — число строк), сырые данные, ваши объекты. Щелчок раскрывает столбцы с типами, щелчок по столбцу или «+» у таблицы вставляет имя в запрос — со схемой (sources.zayavki, raw.events); ваши объекты в public — без неё. Над деревом — поиск по имени и кнопка «Обновить список».
  • Подсказки появляются сами: таблицы (вставятся со схемой), схемы, столбцы, функции Postgres, ключевые слова. После схема. — её таблицы, после псевдоним. — столбцы этой таблицы, после :: — типы. Tab или Enter принимают подсказку, Esc закрывает, Ctrl+Space показывает сразу.
  • Результат: под именем столбца — его тип, NULL — серым курсивом, длинное значение целиком — во всплывающей подсказке. Команда без строк в ответе показывает итог базы: «DELETE 3», «CREATE VIEW»; у create table … as и create materialized view — ещё и сколько строк легло: «CREATE TABLE AS · 12 строк». Ошибка — текстом базы и с местом: «строка 3, символ 14» и кнопка «Показать в редакторе». Язык ошибок — английский или русский — выбирается в «Настройках»: Язык сообщений базы.

Вкладки над редактором — черновики. Они хранятся в кабинете и сохраняются сами, поэтому открываются с любого браузера. «+» — новый черновик, двойной щелчок по названию — переименовать, «×» — закрыть (черновик удалится насовсем). Редактор работает в одной вкладке браузера: откроете вторую — первая допишет несохранённое и уступит, а её кнопка «Работать здесь» вернёт редактор обратно.

Отдельной кнопки «Сохранить запрос» нет: запрос, который нужен снова, сохраните представлением.

create view moi_zapros as
select imya, email from sources.zayavki where email is not null;

Оно появится в дереве (после «Обновить список»), в «Данных» и в DBeaver; его строки — на экране таблицы. Поправить — create or replace view, удалить — drop view. Тяжёлую сводку, которую читаете часто, сохраните материализованным представлением и обновляйте сами:

create materialized view svodka as
select date_trunc('day', _received_at) as den, count(*) from sources.zayavki group by 1;
refresh materialized view svodka;