Управление представлениями витрин
Настроенная витрина может быть опубликована в подключённой базе данных в виде обычного представления, материализованного представления или таблицы. Внешние системы — BI-инструменты, отчётные системы — смогут читать результат витрины непосредственно через подключение к базе данных, без обращения к DataForge.
Где доступно управление представлением
- На странице конструктора витрины — кнопка «Управлять представлением витрины в БД» рядом с кнопкой «Проверить витрину»
- В панели проверки — рядом со сгенерированным запросом
- В списке витрин — значок базы данных в колонке «Действия»
Управление представлениями доступно ролям Суперадминистратор, Администратор компании и Разработчик.
Типы объектов
| Тип | Описание |
|---|---|
| «Обычное представление» | Виртуальная таблица: запрос выполняется при каждом обращении, поэтому объект всегда отражает актуальное состояние источника |
| «Материализованное представление» | Результат запроса сохраняется физически и требует обновления для синхронизации с источником |
| «Таблица» | Физическая таблица, содержащая снимок результата на момент её создания |
Набор доступных типов зависит от целевой базы данных:
| База данных | Схема по умолчанию | Поддерживаемые типы |
|---|---|---|
| PostgreSQL | public |
Обычное представление, материализованное представление, таблица |
| MS SQL Server | dbo |
Обычное представление, таблица |
| ClickHouse | default |
Материализованное представление, таблица |
| MySQL | — | Обычное представление, таблица |
Создание представления
Действие «Создать представление витрины в базе данных» открывает диалог создания.
- «Выберите тип представления» — один из типов, поддерживаемых целевой базой данных
- Выбор места создания — для PostgreSQL и MS SQL Server выбирается схема («Выберите схему базы данных»), для ClickHouse — база данных («Выберите базу данных»). Название можно ввести вручную или выбрать из списка доступных схем или баз данных, загружаемого кнопкой «Загрузить схемы» или «Загрузить базы данных»
- Просмотр скрипта — система формирует скрипт создания объекта. Его SELECT-часть строится точно так же, как при проверке витрины. Скрипт можно скопировать в буфер обмена, экспортировать в текстовый файл или выполнить на подключённой базе данных прямо из диалога
- Результат — после выполнения система показывает ответ базы данных, а при успехе — уведомление «Представление витрины успешно создано в базе данных»
Имя объекта формируется из названия витрины и отображается в колонке «Представление в БД» списка витрин.
Примечания:
- Действие «Создать представление витрины в базе данных» недоступно, пока в витрине есть критические ошибки или недопустимая конфигурация («В витрине используются недопустимые элементы»)
- Если объект с таким именем в базе данных уже существует, система предлагает связать витрину с ним вместо повторного создания: «Представление уже существует в базе данных. Хотите ли вы связать витрину с этим представлением?» При привязке система проверяет, соответствует ли существующий объект текущей конфигурации витрины, и помечает представление как актуальное или как устаревшее
Действия над существующим представлением
| Действие | Описание |
|---|---|
| «Показать представление витрины в БД» | Выполняет запрос к объекту и отображает строки. Используется тот же селектор «Ограничение результата», что и при проверке витрины, с подтверждением кнопкой «Показать» |
| «Обновить представление витрины в БД» | Пересоздаёт объект по текущей конфигурации витрины: прежний объект удаляется, создаётся новый. Применяется после изменения витрины |
| «Удалить представление витрины в БД» | Удаляет объект из базы данных после подтверждения: «Вы уверены, что хотите удалить представление витрины в базе данных?» |
| «Удалить связь с представлением в базе данных» | Удаляет только связь, сохранённую в DataForge; объект в базе данных остаётся без изменений |
Примечания:
- Действие «Обновить представление витрины в БД» недоступно, пока конфигурация витрины недопустима
- Если объект был удалён из базы данных вручную, система сообщает «Представление не найдено в базе данных» и поясняет, что можно удалить только связь: «Возможно, представление было удалено вручную. Вы можете только удалить связь с этим представлением»
- Созданными объектами можно управлять и стандартными средствами используемой СУБД — например, чтобы обновлять материализованное представление или таблицу по расписанию, не изменяя их настроек
- Витрину нельзя удалить, пока с ней связано представление. Сначала удалите объект или как минимум связь с ним
- Связь витрины с созданным для неё представлением сохраняется только в этой витрине. Она не копируется при клонировании витрины, при создании новой версии проекта и при клонировании проекта
Устаревшие представления
Система отслеживает, соответствует ли созданный объект витрине. Состояние отображается цветом значка базы данных:
| Цвет значка | Состояние | Доступные действия |
|---|---|---|
| Синий | Представление ещё не создано | «Создать представление витрины в базе данных» |
| Зелёный | Представление существует и актуально | «Показать», «Обновить», «Удалить», а также удаление связи |
| Жёлтый | Представление существует, но устарело | «Показать», «Обновить», «Удалить», а также удаление связи |
Представление становится устаревшим при сохранении изменения, влияющего на лежащий за ним запрос:
- Витрина переименована
- Изменился состав витрины
- Изменились уровни агрегации
- Изменились фильтры
- Элемент скрыт из результата или снова показан в нём
- Изменился элемент РПИ, на который ссылается представление, — его название, формула или подключённый источник, в том числе при откате изменения через историю изменений РПИ
Сохранение, затрагивающее только фильтры, представление устаревшим не помечает.
При попытке показать устаревшее представление или представление витрины с недопустимой конфигурацией система сначала предупреждает диалогом «Представление витрины устарело»: «Настройки витрины изменились после создания этого представления. Отображаемые данные могут не соответствовать текущей конфигурации». Далее можно выбрать «Все равно показать» либо «Вернуться к настройкам» и обновить объект одним действием «Обновить представление витрины в БД».
Ошибки
Если скрипт не удалось сформировать — например, из-за ошибок в конфигурации витрины — или выполнить на базе данных, пользователь получает уведомление с объяснением проблемы. Длительные операции завершаются сообщением «Время операции истекло. Пожалуйста, попробуйте ещё раз.»