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

Устранение ошибок в моделях

Какая у вас проблема с моделью?

Не могу создать модель

Если вы не видите кнопку модели:

  1. Проверьте версию Glarus BI, перейдя в правый верхний угол экрана и щелкнув значок шестерёнки > О Glarus BI.
  2. Очистите кэш браузера.
  3. Попросите администратора Glarus BI очистить кэш прокси (если вы его используете).

Невозможно редактировать или сохранять изменения в модели

Если ваши изменения в метаданных модели или основной запрос не отображаются:

  1. Обновите браузер, чтобы убедиться, что вы не просматриваете кэшированные результаты.
  2. Найдите известные проблемы с моделями.

Низкая производительность модели

  1. Используйте сохранение модели:

    • Glarus BI может сохранять модели. Если вы активируете сохранение модели, Glarus BI будет читать предварительно вычисленную и материализованную версию модели непосредственно из базы данных, а не запускать запрос "с нуля". Пожалуйста, учтите, что эта опция доступна не для всех поддерживаемых СУБД.
  2. Оптимизируйте базовый сохранённый запрос или SQL-запрос:

    • уменьшите объём запрашиваемых данных;
    • для моделей, использующих запросы SQL, исследуйте узкие места с помощью SQL EXPLAIN.
  3. Оптимизируйте схемы базы данных.

  4. Оптимизируйте свои хранилища данных или базы данных.

Использую сохранение модели — модель не может сохраниться в БД физически

Возможные причины

  1. Закончилось свободное место на диске.
  2. Превышено максимальное время подключения при попытке создания модели.
  3. Настройки СУБД не позволяют использовать ОЗУ сервера БД в полном объёме.
  4. Неудачно составленный запрос, требуется оптимизация.
  5. Недостаточно места на дисках сервера.
  6. Программная ошибка при создании модели.
  7. Объём данных превышает аппаратные возможности сервера.

Диагностика

  1. Выясните, в какой БД находятся исходные данные и в какую происходит сохранение модели. Это могут быть как два различных подключения, так и одно.

  2. Просмотрите раздел Управление > Инструменты. — При успешном сохранении должна присутствовать запись, соответствующая модели со статусом "Завершено". Если в строке с искомой моделью есть ошибки — это сигнал о том, что она не сохранена в БД физически, хотя и существует как объект системы. Если запись отсутствует — это также указывает на проблему сохранения. Примеры ошибок: Read timed out, Memory limit (for query) exceeded.

  3. Просмотрите записи в журнале сервера приложений Управление > Решение проблем > Журналы (или непосредственно журнал приложения в консоли сервера, если у вас есть доступ) об успешности кэширования моделей. Ошибки выполнения пакетов task.persist-refresh или metabase.task.persist-refresh будут сигнализировать о проблеме сохранения модели.

  4. Поручите администратору пересмотреть настройки сервера БД и выполнить диагностику (диск, ОЗУ, настройки): вывод утилит top, df, free, просмотр настроек сервера БД, в которую настроено сохранение моделей.

  5. Выясните время выполнения запроса, на основе которого создана модель.

Решение

Устранение причины ошибки сохранения. Конкретные решения зависят от деталей ошибки, например:

  1. Если проблемы связаны с переполнением диска — выполните очистку или расширьте разделы.

  2. Если не хватает времени на чтение данных или запись модели — есть возможность увеличить значение таймаута подключения к БД в настройках подключения к БД (Управление > Базы данных > (подключение) > параметр Databases). Пример:

    db1?socket_timeout=900000
    
  3. Повысьте порог максимального объёма ОЗУ в настройках СУБД. Например, в ClickHouse используется параметр max_memory_usage, рекомендуется значение до 24 Гбайт при общем объёме ОЗУ 32 Гбайта.

  4. Попытайтесь оптимизировать запрос, который получает данные для модели. Например, если модель сохраняется в ClickHouse, и используется join — убедитесь, что самая большая таблица в join находится слева.

  5. Измените алгоритм join в настройках СУБД ClickHouse на частичное кэширование на диск (это крайняя мера, и в общем случае не рекомендуется). Для этого администратору БД в config.xml следует задать:

    <join_algorithm>partial_merge</join_algorithm>
    
  6. Если проблемы связаны с нехваткой ОЗУ и не решаются настройками — рассмотрите возможность увеличения объёма или миграции БД на сервер с лучшими параметрами.

  7. Если ничего не помогло, возможно, это ошибка приложения — соберите дополнительные материалы и свяжитесь с нашей технической поддержкой.

Детали

Модели — это тип сохранённого запроса, поэтому они будут выполняться так же быстро, как и исходный запрос или SQL-запрос.

Если вы хотите повысить производительность модели, вы можете выполнить оптимизацию на уровне запроса, схемы или базы данных (в зависимости от ваших прав доступа к данным, технических знаний и готовности вложить усилия).

Проблема не решена

Если вы не можете решить проблему с помощью руководств по устранению неполадок:

Дополнительная информация

  1. Обучающий материал Metabase об ускорении дашбордов:

  2. путём перехода на OLAP СУБД (англ.)

  3. путём денормализации (англ.)
  4. путём изменения структуры данных (англ.)
  5. путём создания индексов (англ.)
  6. путём сокращения запрашиваемого объёма данных (англ.)
  7. путём создания материализованных представлений (англ.)
  8. путём репликации (англ.)
  9. путём создания сводных таблиц (англ.)

  10. Список известных ошибок Metabase, связанных с моделями (GitHub, англ.)

  11. Модели
  12. Общие настройки, подключение вложенных запросов
  13. Советы по составлению запросов. Документация Metabase, англ.
  14. Устранение проблем доступа к данным в "песочнице"
  15. Персистентность моделей
  16. Информация о join в ClickHouse (англ.).