Всем привет! В этой статье мы попробуем построить в Tableau фильтр, который позволяет динамическим образом выбирать количество выводимых элементов в топе.
Рабочая ситуация
Задача стояла такая - вывести количество запросов от пользователей в поддержку с разбивкой по версии приложения.
Легко! Но оказалось, что количество версий приложений около 56 и на графике это может выглядеть ужасно.
Поэтому появилась мысль, а можно ли выводить, например 10 версий с самым большим количеством запросов, а при необходимости «развернуть» график.
К сожалению, данный фунционал не представлен явным образом в Tableau.
![пример плохо читаемого графика пример плохо читаемого графика](https://habrastorage.org/getpro/habr/upload_files/521/250/63c/52125063cde773821c4999113eaac0d0.png)
Ликбез
Для создания желаемого фильтра нам потребуются такие сущности как: параметры и множества
Параметры (Parameter) это динамические значения, которые вводит сам пользователь и которые могут затем использоваться в расчетах, фильтрах и элементах контекста.
Множества (Set) это настраиваемые поля с подмножеством данных. Какие значения полей попадают в сет, а какие исключаются из него определяется логическими условиями или просто ручным выбором.
Инструкция. Step by step
1) Создаем параметр. Я его назвал "Choose top N".
![](https://habrastorage.org/getpro/habr/upload_files/277/65f/9b1/27765f9b163bb24bad50289bfdd8e9ba.png)
![](https://habrastorage.org/getpro/habr/upload_files/53f/b59/61b/53fb5961b38390de57392d574c089b94.png)
2) Создаем множество, которое зависит от параметра.
Выбираем поле по которому нужна агрегация, в моем случае это appversion. При создании множества выбираем вкладку Top и ставим в ячейке by fied выбираем ранее созданный параметр. Это множество назвал "Top N".
![](https://habrastorage.org/getpro/habr/upload_files/73e/63f/61b/73e63f61b1af6b314654650b931e78f0.png)
![](https://habrastorage.org/getpro/habr/upload_files/81e/797/96f/81e79796fa59b727075c97be2967e7fa.png)
3) Создаем множество, состоящее из всех элементов.
Аналогично 2-му пункту создаем множество, но которое будет состоять из всех элементов. Так его и назовем "ALL".
![](https://habrastorage.org/getpro/habr/upload_files/ab9/160/732/ab9160732d1d114e459ba63c4847c2cb.png)
4) Создаем параметр, который позволяет выбирать TOP N or select ALL.
Аналогично 1-му пункту начинаем создавать параметр. Однако в пункте Allowable values выбираем list, где прописываем значения "top" и "select all". Значения этого параметра будут выводиться в нашем фильтре.
![](https://habrastorage.org/getpro/habr/upload_files/d52/3d1/5a2/d523d15a23a45c5d56b079763dee15a9.png)
5) Пишем формулу.
Нам нужна формула, которая позволяет выбирать используя значения фильтра нужное ранее созданное множество. Оставляю ее дефолтное название Calculation
Логика такая - Если параметр top n or select all принимает значение top, то используем множество Top N, иначе ALL.
Hidden text
IF [top n or select all] = 'top' then [Top N]
ELSE [ALL]
END
![](https://habrastorage.org/getpro/habr/upload_files/814/479/6f9/8144796f9770f1da0667607b2e41d6cc.png)
6) Последние шаги.
Теперь осталось все выше созданные сущности вывести на экран, чтобы они работали по задуманной нами логике.
Добавляем формулу Calculation в раздел фильтр с флагом "TRUE".
![](https://habrastorage.org/getpro/habr/upload_files/adb/749/cff/adb749cffa546133cc08b50dce3c050a.png)
Для параметров "Choose top N" и "top n or select all" ставим флаг Show parameters. Как итог наши параметры появятся в правой части экрана.
![](https://habrastorage.org/getpro/habr/upload_files/b52/903/c73/b52903c73365b09c20c9e7847fbc07cc.png)
Теперь можно динамическим образом выбирать количество элементов в топе и при необходимости можно выбрать все элементы сразу.
![Пример фильтра Пример фильтра](https://habrastorage.org/getpro/habr/upload_files/003/61d/4e2/00361d4e29b7fa949201eb00e3359da9.png)
Поздравляю, фильтр готов!
Если есть вопросы, то пишите в комментариях.
Также Вам возможно будет интересна статья Как подружить ClickHouse и Power Bi
Связаться со мной @polozovs