Оформление
Сообщения платформы
Что означают тексты, которые платформа показывает вместо результата, и что делать дальше. Разбор по симптомам — «виджет пустой», «данные не грузятся» — в Решении проблем; здесь сообщения собраны по точной формулировке.
Почти все сообщения приходят на русском и годятся для показа пользователю скрипта как есть. Исключение — несколько технических проверок API, которые отвечают по-английски: они собраны в разделе Настройка датасета ниже. Если сообщения нет в этом списке, помогает вторая половина — общие коды ответа API в разделе Работа через REST API.
Виджет не строится
| Сообщение | Что случилось | Что делать |
|---|---|---|
| «Экстракт датасета не построен для объекта id=…» | Датасет в режиме извлечения, а витрина ещё не собрана | Синхронизация → Запустить пересборку и дождаться конца — первая сборка витрины. Либо перевести датасет на прямой запрос |
| «Поле … отсутствует в GROUP BY» | На полке лежит мера без агрегации вместе с измерением | Задать полю агрегацию или убрать его с полки — Поля виджета |
| «Поля […] нельзя показать вместе с мерами этого виджета» | Кардинальность связи размножает строки | Проверить кардинальность связи в датасете — Связи |
| «Обнаружено несколько связей-размножений» | В схеме два и более пути «один ко многим» сразу | Оставить один путь или разделить датасет |
| «Нет связи между […] и […]» | Поля из таблиц, которые в схеме не соединены | Связать таблицы на холсте датасета |
| «Таблица-владелец меры не найдена в датасете» | Виджет ссылается на поле, которого в датасете больше нет: обычно после замены датасета | Заменить поля на полках — Виджеты |
| «Определение вычисляемого поля не найдено: …» | Чаще всего новое поле виджета ещё не сохранено; реже — виджет ссылается на поле, которого нет ни в нём, ни в датасете | Сохранить виджет — вычисляемые поля виджета. Если не помогло — пересоздать поле или убрать ссылку на него |
| «Мера ранжирования не найдена среди полей виджета» | Настроено ограничение по значимости (Top N) по мере, которой на полках нет | Вернуть меру на полку или снять ограничение |
| «Подытог запрошен по полю, которого нет на оси серий» | Включён подытог у поля, убранного с полки «Серии» | Снять переключатель или вернуть поле |
| «Внутренняя ошибка сервера» | Чаще всего — формула, которую не понял источник | Проверить функцию в справочнике: у неё может стоять пометка о неисполнении на этом типе источника |
Формулы и вычисляемые поля
| Сообщение | Что случилось |
|---|---|
| «Ошибка в выражении: …» | Синтаксис формулы: скобка, кавычка, имя функции |
| «Неквалифицированное поле '[…]'» | Поле указано без таблицы — в датасете со связями пишется [таблица.поле] |
| «Агрегатные функции не допустимы в этой позиции (WHERE/GROUP BY/JOIN ON)» | Агрегат в фильтре или в связи. Отбирать по агрегату нужно фильтром по показателю — Фильтры виджета |
| «Оконные функции не допустимы в этой позиции» | То же для оконных функций |
| «Единица DATEADD '…'», «Единица DATEPART '…'», «Единица DATETRUNC '…' не поддерживается источником типа '…'» | Источник не умеет такой шаг — например, квартал в ClickHouse. Список расхождений — в справочнике функций |
| «Вложенные LOD пока не поддержаны» | Расчёт уровня детализации внутри другого такого же расчёта |
| «Под одним внешним агрегатом LOD разных грейнов пока не поддержаны» | Два LOD с разной детализацией под одним агрегатом — разнести по разным полям |
| «Оконная группировка (TOTAL/WITHIN/AMONG) не поддержана для функции '…'» | Модификатор применён к функции, которая его не принимает |
| «Грейн выражения '…' детальнее виджета — оберните во внешний агрегат» | Грейн — это уровень детализации расчёта. Выражение считает подробнее, чем разрез виджета: например, MIN(… FIXED [customer_id]) при разрезе по месяцам. Обернуть в агрегат (AVG(…), MIN(…)) или сменить разрез — LOD |
| «Измерение '[…]' отсутствует в группировках виджета» | Поле, названное в WITHIN или AMONG, не лежит на полках виджета — окно строится по разрезу виджета |
| «Window function … is found inside another window function» (от источника) | Оконная функция внутри другой — например, RSUM(… TOTAL). Общий итог считайте через SUM([поле] FIXED) — Рецепты |
| «Поле нельзя сортировать по самому себе», «Поле сортировки должно лежать в той же таблице» | Ограничения сортировки по другому полю — Настройка полей |
Данные и источники
| Сообщение | Что случилось |
|---|---|
| «Источник не подтвердил соединение» | Проверка связи не прошла: адрес, порт, учётные данные |
| «Имя из адреса не разрешается в сети сервера — проверьте адрес и DNS» | Хост не резолвится с сервера платформы, а не с вашего компьютера |
| «Host … не разрешён (защита от DNS-rebinding)» | Внешний домен MCP-сервера не внесён в список разрешённых — MCP |
| «Ссылка недействительна» | Публичная ссылка на дашборд отозвана, приостановлена, истекла или адресована не вам — публикация по ссылке |
| «Пароль не подошёл» | Неверный пароль публичной ссылки на дашборд — публикация по ссылке |
| «Загрузите .jar в разделе „Типы источников“ — без него подключение невозможно» | Для этого типа СУБД не загружен JDBC-драйвер — Типы источников |
| «Подключение прошло, но база поиска „…“ не найдена» | Связь есть, указанной базы нет: опечатка в названии или нет прав у учётной записи |
| «Ошибка выполнения SQL на источнике: …» | Дальше идёт текст самой СУБД — читать надо его |
| «Не прочитать структуру SQL-блока» | Запрос в SQL-блоке не выполняется или не возвращает столбцов — SQL-блок |
| «Инкрементальная выгрузка не поддержана для файловых источников — используйте FULL» | Стратегию Инкрементальная можно выбрать только у баз данных; в текущей версии и там запуск идёт полным. У S3 и OData те же сообщения со своими названиями типов — ETL, OData |
| «Для INCREMENTAL нужны cursor_column и business_key у объекта» | Не заданы поле-водяной знак и бизнес-ключ |
| «По паттерну не найдено файлов» | Маска S3 не совпала ни с одним объектом — Файлы и S3 |
| «Источник OData не ответил (…)» | Служба 1С недоступна или отвергла учётные данные — OData |
| «Нельзя удалить источник, который используется в моделях» | Сначала отцепить источник от датасетов |
Доступ и права
| Сообщение | Что случилось |
|---|---|
| «Доступ запрещён» (403) | Не хватает прав: типа учётной записи, роли в пространстве или прав на объект — Управление доступом |
| «Токен недействителен или истёк» (401) | Сеанс кончился: войти заново. У токена сеанса срок пятнадцать минут — REST API |
| «Виджет использует поле, недоступное вам» | Сработало правило видимости полей: виджет ссылается на закрытое поле — CLS. Если закрытая мера единственная, тот же случай отвечает общим 403 Доступ запрещён, без пояснения |
| «В датасете есть недоступные вам поля — менять его модель нельзя» | Тот же CLS: редактировать датасет с закрытыми полями нельзя |
| «Нельзя делиться объектами из личного пространства» | Личное пространство не предполагает совместной работы: перенести объект в общее — Пространства |
| «Переносить можно только свои объекты», «Перенести можно только в командное пространство» | Ограничения переноса между пространствами |
| «Нет прав на создание объектов в этом пространстве» | В этом пространстве у вас роль без права создавать |
| «Пользователь владеет рабочими пространствами — сначала передайте владение другому или удалите их» | Учётную запись с пространствами удалить нельзя |
| «Неверный логин или пароль» | Ровно то, что написано: восстановления пароля в платформе нет, новый задаёт администратор |
| «Вход по логину и паролю отключён — воспользуйтесь входом через провайдера» | Встроенный вход выключен администратором — Провайдеры входа |
| «Пароль хранится во внешнем каталоге — смените его там, где заведена учётная запись» | Учётная запись пришла из LDAP или SSO |
Настройка датасета
| Сообщение | Что случилось |
|---|---|
| «Список значений строится для строк, логических полей и целых чисел» | Фильтр-список на дробном числе или дате — сменить вид фильтра — Фильтры дашборда |
| «Доступно только полям из источника» | Сортировка по другому полю недоступна вычисляемым полям |
| «Параметров у датасета не больше 50» | Предел числа параметров |
| «Имя параметра не может содержать скобки { } [ ]» | Ограничение имени: скобки заняты синтаксисом формул |
| «Field kind cannot change (calculated ↔ physical)» | Поле пытаются превратить из обычного в вычисляемое или наоборот — так нельзя, нужно новое поле |
| «Object id is required (use a negative temp id for new objects)» | Приходит при записи схемы через API: новым объектам дают временный отрицательный идентификатор — REST API |
Конвейеры и перенос
| Сообщение | Что случилось |
|---|---|
| «Пространство стадии не привязано» | Стадии конвейера не назначено пространство — Конвейеры развёртывания |
| «К стадии можно привязать только командное пространство» | Личное пространство стадией быть не может |
| «Сравнить можно только с соседней стадией» | Цепочка проходится по шагу |
| «Пространство уже участвует в другом пайплайне» | Пространство стоит в стадии другого конвейера: одно пространство — один конвейер — конвейеры развёртывания |
| «Развернуть можно только в следующую стадию» | Через стадию перепрыгнуть нельзя |
| «Доступ запрещён» при развёртывании | Разворачивать в стадию может только администратор принимающего пространства — конвейеры развёртывания |
| «Зависимость вне исходной стадии: …» | Объект или его зависимость лежат не в пространстве стадии |
| «В целевой стадии уже есть объект с именем „…“» | Имя занято объектом, не связанным с доставляемым |
Выгрузка и рассылки
| Сообщение | Что случилось | Что делать |
|---|---|---|
| «Файл не сформирован»: «Рендер не успел за отведённое время» | Вкладка не отрисовалась за две минуты. Так же выглядит отсутствие доступа к дашборду или к его данным | Открыть дашборд в браузере; если данные видны — повторить выгрузку — выгрузка в файл |
| «Доступ запрещён» при создании рассылки | Вы не состоите в группе Авторы рассылок | Попросить администратора добавить вас в группу, затем выйти и войти заново — системные группы |
| «Править рассылки может только участник группы «Авторы рассылок»» | То же при открытии рассылки на правку: кнопка Сохранить неактивна | То же |
| «Операция конфликтует с текущим состоянием данных» при сохранении рассылки | В текущей версии правка не сохраняется, если прежние получатели остались в списке | Завести рассылку заново с нужными настройками — рассылки |
| «почтовый канал не настроен» в письмах запуска | В платформе нет почтового канала, а завести его в текущей версии нечем | Рассылки |
Что дальше
- Решение проблем — те же ситуации, но по симптомам.
- Работа через REST API — коды ответа и структура ошибки.
- Ограничения текущей версии — чего платформа не делает вовсе.