Перейти к содержанию

Управление представлениями витрин

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

Где доступно управление представлением

  • На странице конструктора витрины — кнопка «Управлять представлением витрины в БД» рядом с кнопкой «Проверить витрину»
  • В панели проверки — рядом со сгенерированным запросом
  • В списке витрин — значок базы данных в колонке «Действия»

Управление представлениями доступно ролям Суперадминистратор, Администратор компании и Разработчик.

Типы объектов

Тип Описание
«Обычное представление» Виртуальная таблица: запрос выполняется при каждом обращении, поэтому объект всегда отражает актуальное состояние источника
«Материализованное представление» Результат запроса сохраняется физически и требует обновления для синхронизации с источником
«Таблица» Физическая таблица, содержащая снимок результата на момент её создания

Набор доступных типов зависит от целевой базы данных:

База данных Схема по умолчанию Поддерживаемые типы
PostgreSQL public Обычное представление, материализованное представление, таблица
MS SQL Server dbo Обычное представление, таблица
ClickHouse default Материализованное представление, таблица
MySQL Обычное представление, таблица

Создание представления

Действие «Создать представление витрины в базе данных» открывает диалог создания.

  1. «Выберите тип представления» — один из типов, поддерживаемых целевой базой данных
  2. Выбор места создания — для PostgreSQL и MS SQL Server выбирается схема («Выберите схему базы данных»), для ClickHouse — база данных («Выберите базу данных»). Название можно ввести вручную или выбрать из списка доступных схем или баз данных, загружаемого кнопкой «Загрузить схемы» или «Загрузить базы данных»
  3. Просмотр скрипта — система формирует скрипт создания объекта. Его SELECT-часть строится точно так же, как при проверке витрины. Скрипт можно скопировать в буфер обмена, экспортировать в текстовый файл или выполнить на подключённой базе данных прямо из диалога
  4. Результат — после выполнения система показывает ответ базы данных, а при успехе — уведомление «Представление витрины успешно создано в базе данных»

Имя объекта формируется из названия витрины и отображается в колонке «Представление в БД» списка витрин.

Примечания:

  • Действие «Создать представление витрины в базе данных» недоступно, пока в витрине есть критические ошибки или недопустимая конфигурация («В витрине используются недопустимые элементы»)
  • Если объект с таким именем в базе данных уже существует, система предлагает связать витрину с ним вместо повторного создания: «Представление уже существует в базе данных. Хотите ли вы связать витрину с этим представлением?» При привязке система проверяет, соответствует ли существующий объект текущей конфигурации витрины, и помечает представление как актуальное или как устаревшее

Действия над существующим представлением

Действие Описание
«Показать представление витрины в БД» Выполняет запрос к объекту и отображает строки. Используется тот же селектор «Ограничение результата», что и при проверке витрины, с подтверждением кнопкой «Показать»
«Обновить представление витрины в БД» Пересоздаёт объект по текущей конфигурации витрины: прежний объект удаляется, создаётся новый. Применяется после изменения витрины
«Удалить представление витрины в БД» Удаляет объект из базы данных после подтверждения: «Вы уверены, что хотите удалить представление витрины в базе данных?»
«Удалить связь с представлением в базе данных» Удаляет только связь, сохранённую в DataForge; объект в базе данных остаётся без изменений

Примечания:

  • Действие «Обновить представление витрины в БД» недоступно, пока конфигурация витрины недопустима
  • Если объект был удалён из базы данных вручную, система сообщает «Представление не найдено в базе данных» и поясняет, что можно удалить только связь: «Возможно, представление было удалено вручную. Вы можете только удалить связь с этим представлением»
  • Созданными объектами можно управлять и стандартными средствами используемой СУБД — например, чтобы обновлять материализованное представление или таблицу по расписанию, не изменяя их настроек
  • Витрину нельзя удалить, пока с ней связано представление. Сначала удалите объект или как минимум связь с ним
  • Связь витрины с созданным для неё представлением сохраняется только в этой витрине. Она не копируется при клонировании витрины, при создании новой версии проекта и при клонировании проекта

Устаревшие представления

Система отслеживает, соответствует ли созданный объект витрине. Состояние отображается цветом значка базы данных:

Цвет значка Состояние Доступные действия
Синий Представление ещё не создано «Создать представление витрины в базе данных»
Зелёный Представление существует и актуально «Показать», «Обновить», «Удалить», а также удаление связи
Жёлтый Представление существует, но устарело «Показать», «Обновить», «Удалить», а также удаление связи

Представление становится устаревшим при сохранении изменения, влияющего на лежащий за ним запрос:

  • Витрина переименована
  • Изменился состав витрины
  • Изменились уровни агрегации
  • Изменились фильтры
  • Элемент скрыт из результата или снова показан в нём
  • Изменился элемент РПИ, на который ссылается представление, — его название, формула или подключённый источник, в том числе при откате изменения через историю изменений РПИ

Сохранение, затрагивающее только фильтры, представление устаревшим не помечает.

При попытке показать устаревшее представление или представление витрины с недопустимой конфигурацией система сначала предупреждает диалогом «Представление витрины устарело»: «Настройки витрины изменились после создания этого представления. Отображаемые данные могут не соответствовать текущей конфигурации». Далее можно выбрать «Все равно показать» либо «Вернуться к настройкам» и обновить объект одним действием «Обновить представление витрины в БД».

Ошибки

Если скрипт не удалось сформировать — например, из-за ошибок в конфигурации витрины — или выполнить на базе данных, пользователь получает уведомление с объяснением проблемы. Длительные операции завершаются сообщением «Время операции истекло. Пожалуйста, попробуйте ещё раз.»