Версия 26.09.1.0
Новое
Разделение пользователей по типам в корпоративных лицензиях
Корпоративная лицензия теперь может определять, сколько пользователей каждого типа допускается к работе в продукте. Пользователи делятся на два типа по глобальной роли: суперадминистраторы, администраторы компании, менеджеры проектов и разработчики относятся к разработчикам, а аналитики и наблюдатели — к аналитикам. Для каждого типа в лицензии задаётся собственный максимум, и любой из них можно оставить неограниченным. Когда лимит исчерпан, добавление нового пользователя — как и смена роли на ту, которая требует исчерпанного типа, — блокируется с сообщением о том, какой именно лимит этому мешает. В окне сведений о лицензии теперь показано текущее число пользователей каждого типа и допустимый максимум, каждый тип отмечен как «в пределах лимита», «лимит достигнут» или «лимит превышен», а у самой лицензии появилось состояние «Приостановлена», в котором указано, какие именно лимиты превышены.
Таблицы фактов и связи в импорте РПИ
Импорт РПИ из файла теперь может загружать таблицы фактов проекта и их связи со справочниками, поэтому создавать всё это вручную после импорта больше не нужно. Эти возможности доступны в любом проекте и любой версии, независимо от того, с какой вкладки РПИ был запущен импорт, и подчиняются тем же правам доступа, что и остальной импорт. В файлах Excel листы с названиями «Таблицы фактов» и «Связи» сопоставляются автоматически, а в файлах CSV они выбираются так же, как остальные данные РПИ. В мастере появились соответствующие шаги выбора столбцов и две новые вкладки на шаге «Проверка и импорт», построенные по образцу одноимённых вкладок РПИ: с тем же поиском, сортировкой и возможностью показать только выбранные для импорта столбцы. Строки, которые загрузить нельзя — таблицы фактов с одинаковыми или некорректными названиями, связи без существующей таблицы фактов или справочника, — отмечаются предупреждением и не импортируются, поэтому загружаются только корректные данные. По завершении импорта таблицы фактов создаются, показатели, измерения, факты и справочники назначаются им, а связи настраиваются ровно так, как это было показано на шаге проверки. Импорт в целом стал предсказуемее: ячейки, которых нет в импортируемом файле, теперь очищаются, а не сохраняют прежние значения, поэтому новые данные больше не смешиваются с остатками старых.
Функции периода в формулах
Четыре новые функции позволяют корректно рассчитывать показатели по остаткам и запасам: PERIODDAYS и ACTIVEDAYS возвращают длительность периода и число дней с активностью в нём, а OPENINGVALUE и CLOSINGVALUE — значение на начало и на конец периода. Их можно ввести в текстовом редакторе формул и выбрать в конструкторе формул, где PERIODDAYS и ACTIVEDAYS добавлены в категорию «Дата и время», а OPENINGVALUE и CLOSINGVALUE — в категорию «Диапазон»; при выборе блока функции показываются её описание, текущая формула и ожидаемое число аргументов. Формулы проверяются по ходу написания — контролируется число параметров и то, что указанное измерение является полем даты, — а визуальное и текстовое представления остаются синхронными. Новые функции транслируются в SQL для всех поддерживаемых баз данных, а также передаются через API и при экспорте и импорте версий проекта.
Оркестрация представлений витрин
Объектами витрин, созданными в базе данных, теперь управляет сам продукт, а не пользователь вручную. У каждого развёрнутого объекта есть статус жизненного цикла — не развёрнут, активен, развёртывается, обновляется, устарел или ошибка, — который виден и в списке витрин, и на экране витрины; при ошибке доступен текст ошибки базы данных, а во время развёртывания или обновления показывается ход выполнения. Если изменения в проекте привели к тому, что развёрнутый объект больше не соответствует текущей модели, продукт отмечает его как расходящийся и предлагает привести в соответствие; пользователи, управляющие представлениями, могут также пересоздать объект вручную из окна подтверждения. Каждое развёртывание, обновление и обновление данных записывается в историю развёртываний, доступную по каждой витрине. Для материализованных представлений и таблиц появилась настройка обновления данных: полное, по расписанию, по требованию или инкрементальное, с редактором расписания, приостановкой и возобновлением, отображением следующего планового запуска, времени последнего обновления и фактически использованного режима. Инкрементальное обновление перезагружает только изменившиеся данные в тех базах данных, которые это поддерживают, — PostgreSQL и ClickHouse для материализованных представлений и таблиц, Microsoft SQL Server для таблиц, — а для остальных интерфейс поясняет, почему эта возможность недоступна. Если правило обновления по событию с инкрементальным обновлением пересоздаёт таблицу, у которой изменился только набор колонок, таблица изменяется на месте и сохраняет данные, права доступа и состояние обновления, а не удаляется и создаётся заново. Обновления по правилам запускаются небольшими группами с паузами между ними, а число одновременных операций над одной базой данных ограничено, чтобы не перегружать целевую базу данных. Наконец, если у источника данных включён перенос прав доступа — по умолчанию он выключен, — права доступа исходных таблиц переносятся на развёрнутый объект: разрешения на таблицы и столбцы, политики защиты на уровне строк, правила маскирования и назначения ролей считываются из базы данных и объединяются так, чтобы объект давал только то, что разрешают все его источники. Перед развёртыванием предпросмотр показывает, кто получит доступ, какие столбцы будут скрыты или замаскированы и какие политики будут применены, предупреждает, если правило вынуждено закрыть доступ группе пользователей, и не даёт сохранить конфигурацию, которую невозможно защитить.
Доступ к базе данных под учётными данными пользователя
Учётные данные базы данных теперь настраиваются отдельно от подключений, которые их используют, — в новом объекте «источник данных», где хранятся адрес, база данных и схема, параметры SSL и служебная учётная запись. Для каждого источника данных выбирается способ обращения к базе: под одной общей учётной записью, как раньше, или под личными учётными данными каждого пользователя. Во втором случае администратор указывает, откуда эти учётные данные берутся — введены вручную в продукте, получены из хранилища секретов или через привязку LDAP, — и может разрешить переход на общую учётную запись, если у пользователя нет собственной. Личные учётные данные ведутся на отдельном экране, где администратор добавляет, изменяет, проверяет и удаляет соответствие между пользователем продукта и логином в базе данных; они хранятся в зашифрованном виде, и отображается только логин. Когда пользователь запрашивает предпросмотр показателя или витрины, запрос выполняется под его собственными учётными данными, поэтому база данных применяет именно его права и никто не видит больше положенного. Все существующие подключения переведены на источники данных автоматически, поэтому перенастраивать ничего не требуется, а события, связанные с учётными данными, фиксируются в журнале аудита.
Единая версия API для всех эндпоинтов
Публичный API теперь предлагает одну версию и один формат подключения для всего. Эндпоинты витрин и подключений, существовавшие только в первой версии, доступны и по пути /df-api/v2/, поэтому интеграции больше не приходится смешивать два базовых пути и два набора соглашений в одном сценарии. Новые эндпоинты работают так же, как остальной API второй версии: аутентификация по ключу API в заголовке X-Api-Key, доступ только к тем проектам, которые владелец ключа может открыть в интерфейсе (недоступные проекты возвращаются просто как ненайденные), постраничная выдача, поиск и фильтрация в списках, параметр языка для локализуемых значений и ограничение частоты запросов. Создать или удалить витрины и подключения через API нельзя — изменить можно только настройки инкрементального обновления развёрнутого объекта витрины, — а каждый эндпоинт описан в документации с полными примерами запроса и ответа.
Экспорт и импорт через Git по API
Экспорт и импорт версий проекта через Git, прежде доступные только в интерфейсе, теперь доступны и через API, поэтому их можно встроить в конвейер CI/CD. Версию проекта можно выгрузить в репозиторий Git отдельным коммитом или получить в виде файла архива, а также загрузить обратно из репозитория — из последнего или из конкретного коммита — либо из переданного архива. Отдельные запросы проверки и предпросмотра выполняют пробный прогон: они сообщают о конфликтах, недостающих ссылках и других предупреждениях, ничего не изменяя, что позволяет ставить успешную проверку условием слияния изменений. Сохранённые подключения Git тоже управляются через API — их можно получить списком, создать, изменить, проверить и удалить, — поэтому не нужно повторять учётные данные в каждом вызове; для разовых вызовов поддерживаются токен доступа, ключ SSH и пара «имя пользователя и пароль». Права соответствуют интерфейсу: для экспорта нужна роль аналитика или выше, для импорта — роль разработчика или выше. Готовые примеры конвейеров для GitLab CI и GitHub Actions вместе со списком необходимых переменных и рекомендациями по обработке ошибок проверки опубликованы в документации.
Улучшения и исправления
- Удаление столбца в РПИ теперь очищает весь столбец независимо от числа строк, а отмена удаления восстанавливает его целиком (IMP-3011)
- Таблица РПИ стала заметно отзывчивее: она больше не перерисовывается, пока с ней никто не работает, подсветка активной ячейки плавно следует за нажатиями, а отмена и повтор действия применяются сразу, не дожидаясь перезагрузки таблицы (IMP-3094, IMP-3095, IMP-3096)
- Вырезание ячеек сочетанием Ctrl+X в РПИ снова работает (IMP-3011)
- История изменений, открытая из одной ячейки, теперь фильтруется по элементу, а не по этой ячейке (IMP-2989)
- Создание показателей внутри таблиц фактов и витрин теперь записывается в историю изменений (IMP-3010)
- Формула, которая ссылается на факт по имени до его создания, начинает работать сразу после добавления факта — ссылка разрешается автоматически, а не остаётся нерабочей до повторного сохранения формулы (IMP-2870)
- На вкладке «Показатели» таблицы фактов снова отображаются столбцы «Блок», «Отображаемый тип данных» и «Ограничения показателя» (IMP-2997)
- Вкладка «Показатели» таблицы фактов открывается и в том случае, когда у показателя нет формулы (IMP-3071)
- Элементы на экране конфигурации витрины загружаются быстрее (IMP-2713)
- Подсказки больше не подвисают при добавлении элементов в витрину с экрана конфигурации (IMP-2918)
- В транспонированных витринах поле факта больше не выходит на передний план при наложении блоков, а блок «Детализация показателей» остаётся там, где его разместили (IMP-2999)
- Кнопка «Сохранить изменения» работает после удаления последней таблицы фактов с холста витрины (IMP-3068)
- Представления витрин учитываются в анализе влияния, даже если они были созданы в другой базе данных или схеме, чем указана в подключении (IMP-2917)
- В транспонированных витринах на ClickHouse поле «Значение знаменателя» простых общих показателей получает тот же тип данных, что и остальные показатели, поэтому итоговое представление обрабатывается корректно (IMP-3070)
- Аналитикам снова доступны кнопка редактирования витрины внутри самой витрины и кнопка управления её представлением в базе данных (IMP-2987)
- Большие и разворачиваемые модальные окна во всём приложении приведены к единому размеру (IMP-2853)
- OAuth-авторизация Git-подключений к GitLab и GitHub теперь работает за обратным прокси локальной установки; адрес репозитория (https) вводится до авторизации, а SSH-адрес с OAuth использовать нельзя (IMP-3069)
- Подключённые источники, возвращаемые API, теперь содержат название подключения — так же, как в структуре экспорта и импорта РПИ (IMP-2985)
- API теперь применяет те же ограничения по ролям и проверку названий, что и интерфейс, при создании и переименовании проектов и версий (IMP-2984)
- API теперь отвечает «не найдено» вместо ошибки, если идентификатор ресурса выходит за допустимый диапазон (IMP-2906)
- Общий запрос РПИ в API возвращает все показатели, измерения и факты, а не только первые двадцать (IMP-3053)
- API теперь возвращает значения ограничений показателя, вариативности и ответственного за данные, которых раньше не было в ответах (IMP-3054)
- Системный журнал компании доступен только администраторам этой компании; суперадминистратор сохраняет доступ к журналам всех компаний (IMP-3000)