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

Мои связанные фильтры не работают

Допустим, вы создали связанный фильтр (документация Metabase, англ.) для дашборда. Мы хотим его сконфигурировать таким образом, чтобы фильтр «Город» отображал только города в штате, выбранном в фильтре "Штат". Однако:

  • ваши карты показывают «Нет результата», когда вы применяете связанный фильтр,
  • кажется, что ваш связанный фильтр не работает,
  • виджет связанного фильтра не отображает раскрывающийся список отфильтрованных значений.

Если у вас возникли проблемы с обычным виджетом фильтра (документация Metabase, англ.), см. это руководство. Чтобы исправить проблемы со связанными фильтрами, вам нужно чётко понимать, как они работают:

Вы понимаете направленность связанных фильтров?

Основная причина: Связанные фильтры — одна из наиболее сложных функций Glarus BI, и многие проблемы связаны с непониманием их работы.

Действия: Убедитесь, что вы понимаете приведённые ниже пункты, и что ваш связанный фильтр настроен с их учетом.

  1. Фильтр не является частью конкретного запроса. Вместо этого на дашборд добавляется фильтр, и его значение используется для заполнения переменных в запросах.
  2. Чтобы Glarus BI отображал выпадающий список возможных значений фильтра, он должен знать, что столбец соответствует категории. Это происходит автоматически, если запрос создаётся из таблиц с помощью редактора блокнота, поскольку в Glarus BI есть сведения о таблице и столбцах из синхронизации.
  3. С другой стороны, если запрос, содержащий переменную, написан на языке SQL, автор запроса должен выбрать «Фильтр полей». Кроме того, указанное поле должно быть установлено как категория в метаданных таблицы, чтобы Glarus BI отображала выпадающий список значений.

Правильно ли связаны фильтры?

Основная причина: Наиболее распространённая причина ошибок заключается в том, что фильтры связаны в неправильном направлении. Если вы хотите, чтобы значения, отображаемые фильтром B, были ограничены настройкой фильтра A, вы должны изменить настройки для фильтра B, а не для фильтра A, т. е. настройка применяется к нижестоящему, а не к вышестоящему фильтру.

Действия:

  1. Удалите существующую связь и создайте новую в противоположном направлении.

Действительно ли некоторые строки удовлетворяют условию полного фильтра?

Основная причина: Нет строк, удовлетворяющих всем условиям связанного фильтра. Продолжая пример с городом и штатом, если вы вручную введёте название города, который не находится в выбранном штате, ни одна запись не будет удовлетворять обоим условиям.

Действия:

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

Все ли строки, прошедшие первый тест, проходят и второй?

Основная причина. В некоторых случаях все строки, удовлетворяющие условию первого фильтра, также удовлетворяют условию второго фильтра, поэтому второй фильтр не действует.

Действия:

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

Отображает ли виджет связанного фильтра раскрывающийся список отфильтрованных значений?

Основная причина: Чтобы связанный виджет фильтра отображал правильное подмножество значений в виде раскрывающегося списка, необходимо настроить явное определение внешнего ключа (документация Metabase, англ.) — связывание фильтров сам по себе не сообщает Glarus BI об отношениях между таблицами в базе данных.

Действия:

  1. Убедитесь, что метаданные таблицы Glarus BI для вашей базы данных включает отношение внешнего ключа.