Условие на расчет данных в дашборде - Продукт Modus BI
Условие
Иногда при разработке дашбордов аналитикам необходимо установить условия на расчет данных. Например, данные не должны рассчитываться, если в панели фильтров не установлены значения или если необходимо установить лимит при расчете какого-либо количества обращений.
В Аналитическом портале такая логика реализуется при помощи использования переменных дашборда (подробное описание представлено в разделе «Использование переменных в дашборде»). Переменные принимают значения из фильтров и передают их в набор данных, при этом определяя необходимость расчета и выполнения всего запроса, в соответствии с установленными фильтрами.
Пример: если в фильтре по менеджерам выбрано не больше двух менеджеров, то необходимо вывести данные по продажам, иначе необходимо вывести сообщение в таблице «Выберите не более 2 менеджеров в отчете».
Загрузите таблицу в отчет и постройте простой дашборд с отображением суммы продаж с группировкой и фильтром по менеджеру.
Чтобы установить условие расчета, воспользуйтесь функционалом переменных.
Перейдите в настройки компонента «Контейнер с фильтрами» и в разделе «Переменные» установите имя переменной «mng», как показано на рисунке ниже.
Система передает переменные в виде строковых перечислений, которые можно использовать в любом месте запроса или вычисляемого поля. Нам требуется подсчитать количество значений, переданных через переменную дашборда. Если выбрать несколько значений фильтра «Менеджер», то эти значения будут переданы через запятую как отдельные строковые значения.
Количество переданных значений переменной вычисляется через преобразование в массив и подсчет его элементов.
СУБД PostgreSQL
Для СУБД PostgreSQL воспользуйтесь функцией cardinality, а массив определите функцией ARRAY(), тогда выражение для подсчета строк переменной будет выглядеть так:
cardinality(ARRAY(!env.mng!))
СУБД ClickHouse
В СУБД ClickHouse воспользуйтесь функцией length, массив определяется функцией array():
SELECT length(array(!env.mng!))
Настройка набора данных
Добавьте в набор данных конструкцию на условие расчета. В условие установите расчет, что переменная имеет меньше трех значений where {cardinality(ARRAY[!env.mng!]) < 3; false}
select
"field_A" manager,
"field_B" staff,
"field_C" period,
"field_D" amaunt
from
"xls_demo_lim"
where {cardinality(ARRAY[!env.mng!]) < 3; false}
Вернитесь в дашборд и проверьте работу отчета. Если фильтр не установлен, то расчет произведен не будет (значение замены фильтра - false). Если установлены 1 или 2 элемента, то отчет выполнит фильтрацию. Если выбрано 3 элемента в фильтре, то данные не будут отображаться.
При выборе одного или двух элементов данные отображаются, как показано на рисунке ниже.