Устранение ошибок в моделях¶
Какая у вас проблема с моделью?
Не могу создать модель¶
Если вы не видите кнопку модели:
- Проверьте версию Glarus BI, перейдя в правый верхний угол экрана и щелкнув значок шестерёнки > О Glarus BI.
- Очистите кэш браузера.
- Попросите администратора Glarus BI очистить кэш прокси (если вы его используете).
Невозможно редактировать или сохранять изменения в модели¶
Если ваши изменения в метаданных модели или основной запрос не отображаются:
- Обновите браузер, чтобы убедиться, что вы не просматриваете кэшированные результаты.
- Найдите известные проблемы с моделями.
Низкая производительность модели¶
-
Используйте сохранение модели:
- Glarus BI может сохранять модели. Если вы активируете сохранение модели, Glarus BI будет читать предварительно вычисленную и материализованную версию модели непосредственно из базы данных, а не запускать запрос "с нуля". Пожалуйста, учтите, что эта опция доступна не для всех поддерживаемых СУБД.
-
Оптимизируйте базовый сохранённый запрос или SQL-запрос:
- уменьшите объём запрашиваемых данных;
- для моделей, использующих запросы SQL, исследуйте узкие места с помощью SQL EXPLAIN.
-
Оптимизируйте схемы базы данных.
- Агрегируйте данные заранее с помощью сводных таблиц (документация Metabase, англ.).
- Индексируйте часто запрашиваемые столбцы (документация Metabase, англ.).
- Денормализуйте ваши данные (документация Metabase, англ.).
- Материализуйте представления (документация Metabase, англ.).
- Извлеките данные из JSON и вставьте их ключи в столбцы (документация Metabase, англ.).
-
Оптимизируйте свои хранилища данных или базы данных.
Использую сохранение модели — модель не может сохраниться в БД физически¶
Возможные причины
- Закончилось свободное место на диске.
- Превышено максимальное время подключения при попытке создания модели.
- Настройки СУБД не позволяют использовать ОЗУ сервера БД в полном объёме.
- Неудачно составленный запрос, требуется оптимизация.
- Недостаточно места на дисках сервера.
- Программная ошибка при создании модели.
- Объём данных превышает аппаратные возможности сервера.
Диагностика
-
Выясните, в какой БД находятся исходные данные и в какую происходит сохранение модели. Это могут быть как два различных подключения, так и одно.
-
Просмотрите раздел Управление > Инструменты. — При успешном сохранении должна присутствовать запись, соответствующая модели со статусом "Завершено". Если в строке с искомой моделью есть ошибки — это сигнал о том, что она не сохранена в БД физически, хотя и существует как объект системы. Если запись отсутствует — это также указывает на проблему сохранения. Примеры ошибок:
Read timed out
,Memory limit (for query) exceeded
. -
Просмотрите записи в журнале сервера приложений Управление > Решение проблем > Журналы (или непосредственно журнал приложения в консоли сервера, если у вас есть доступ) об успешности кэширования моделей. Ошибки выполнения пакетов task.persist-refresh или metabase.task.persist-refresh будут сигнализировать о проблеме сохранения модели.
-
Поручите администратору пересмотреть настройки сервера БД и выполнить диагностику (диск, ОЗУ, настройки): вывод утилит top, df, free, просмотр настроек сервера БД, в которую настроено сохранение моделей.
-
Выясните время выполнения запроса, на основе которого создана модель.
Решение
Устранение причины ошибки сохранения. Конкретные решения зависят от деталей ошибки, например:
-
Если проблемы связаны с переполнением диска — выполните очистку или расширьте разделы.
-
Если не хватает времени на чтение данных или запись модели — есть возможность увеличить значение таймаута подключения к БД в настройках подключения к БД (Управление > Базы данных > (подключение) > параметр Databases). Пример:
-
Повысьте порог максимального объёма ОЗУ в настройках СУБД. Например, в ClickHouse используется параметр
max_memory_usage
, рекомендуется значение до 24 Гбайт при общем объёме ОЗУ 32 Гбайта. -
Попытайтесь оптимизировать запрос, который получает данные для модели. Например, если модель сохраняется в ClickHouse, и используется join — убедитесь, что самая большая таблица в join находится слева.
-
Измените алгоритм join в настройках СУБД ClickHouse на частичное кэширование на диск (это крайняя мера, и в общем случае не рекомендуется). Для этого администратору БД в config.xml следует задать:
-
Если проблемы связаны с нехваткой ОЗУ и не решаются настройками — рассмотрите возможность увеличения объёма или миграции БД на сервер с лучшими параметрами.
-
Если ничего не помогло, возможно, это ошибка приложения — соберите дополнительные материалы и свяжитесь с нашей технической поддержкой.
Детали
Модели — это тип сохранённого запроса, поэтому они будут выполняться так же быстро, как и исходный запрос или SQL-запрос.
Если вы хотите повысить производительность модели, вы можете выполнить оптимизацию на уровне запроса, схемы или базы данных (в зависимости от ваших прав доступа к данным, технических знаний и готовности вложить усилия).
Проблема не решена¶
Если вы не можете решить проблему с помощью руководств по устранению неполадок:
- спросите совет в сообществе Glarus BI.
- найдите известные проблемы с моделями.
Дополнительная информация¶
-
Обучающий материал Metabase об ускорении дашбордов:
- путём денормализации (англ.)
- путём изменения структуры данных (англ.)
- путём создания индексов (англ.)
- путём сокращения запрашиваемого объёма данных (англ.)
- путём создания материализованных представлений (англ.)
- путём репликации (англ.)
-
Список известных ошибок Metabase, связанных с моделями (GitHub, англ.)
- Модели
- Общие настройки, подключение вложенных запросов
- Советы по составлению запросов. Документация Metabase, англ.
- Устранение проблем доступа к данным в "песочнице"
- Персистентность моделей
- Информация о join в ClickHouse (англ.).