Один из тех подходов, который я часто использую при работе с QlikView – использование динамических измерений и выражений, которые работают при нажатии на кнопки в приложениях. На мой взгляд, это дает больше свободы, чем работа с отдельными циклическими группами или измерениями, особенно если вы работаете сразу с несколькими диаграммами одновременно. В QlikView реализация этой задачи очевидна – создали вычисляемое измерение, а дальше уже дело техники (за пару минут уже все готово), но в Qlik Sense все несколько иначе. В этой статье как раз и покажу, как это сделать в Qlik Sense с минимальными трудозатраты и максимальной пользой.

Кнопки переключения в Qlik: Обзор

Если вы знаете, как создать набор переменных по щелчку в QlikView, то тогда вычисляемые измерения вы создадите быстро и добавите набор выражений за несколько простых шагов. НО однажды, я столкнулся с задачей сделать аналогичную процедуру не в QlikView, а в Qlik Sense. Немного подумав над реализацией задачи, я понял, что для этого нужно создавать собственное расширение. Но для этого у меня не было времени. Поэтому возникла иная идея, которая помогла в этом случае.

Ловушка расширений Qlik

Конечно, наличие огромной площадки с расширениями Qlik Sense дает множество преимуществ, но использовать эту площадку нужно с умом, потому что наличие большого количества открытых разработок не гарантирует их качество. Конечно, вы можете скачать расширение, созданное разработчиком с открытой платформы, но какие гарантии, что это расширение будет совместимо с новыми версиями Sense? Поэтому решение моей задачи видится таким образом – найти расширение на Branch, которое работает с переменной по щелчку, также расширение должно поддерживаться командой разработчиков Qlik. Такое расширение нашлось на Qlik Branch у сотрудника Qlik, Стэфана Вэлсера.

Но в этом расширении есть один существенный недостаток для моей задачи – здесь нельзя настроить цвета кнопок на основе значения переменных, хотя при этом можно установить выражения на кнопки.

Создаем кнопку-переключатель в Qlik Sense

После того как мы установили это расширение Qlik Sense к себе, мы можем создать набор кнопок переключения в таком стиле:

Sense Toggle Buttons

Поскольку у нас нет цвета, то для того, чтобы показать, что кнопка активна, мы используем точки на кнопке. А для того чтобы иметь переменную, которая работает по щелчку на кнопке, мы добавляем в скрипт загрузки такую строку кода:

let vDim = ‘Product’;

Теперь для того чтобы изменить переменную, нам нужно несколько кнопок, по одной кнопке для каждой настройки. Итак, добавим наше расширение на лист приложения Qlik Sense:

Select Extension

Сделаем необходимые настройки.

Во вкладке основные (General)  отключим заголовки и детали:

General Toggles

Параметр стиль (Style) определяет цвет кнопки. Вы должны настроить основной цвет, а также убрать иконки и сделать кнопку на полную ширину. В настройках слоя изменим параметры ярлыка на следующие:

Layout Options

Учитывая, что изначально задача наших кнопок – навигация, но мы не будем это использовать в этот раз, мы отключим эту настройку:

Navigation Behaviour

Идем во вкладку действия (Actions). Активируем настройку Apply Action Before Navigation, а затем выбираем Set Variable. Теперь называем нашу переменную, а также указываем ее значение:

Sense Button Actions

Теперь у нас есть кнопка, которая устанавливает переменную, но мы не можем видеть установлена ли эта переменная. Для этого нужно добавить немного кода к ярлыку, но поскольку он будет один и тот же для каждой группы переключателей, поэтому сделаем этот код в виде переменной.

Эту переменную создадим через скрипт загрузки:

set vBtnLegend = if($2 = ‘$3’, ‘● ‘, ”) & ‘$1’ & if($2 = ‘$3’, ‘ ●’, ”);

Этот код состоит из трех параметров: первый параметр читает текст на кнопке, второй – определяет установленное имя переменной, в нашем случае vDim, а третий параметр – это значение, которое устанавливает тип кнопки. Значение ярлыку всегда возвращается через параметр, опционально он опосредован знаком ● ( =chr(9679) ). Эта выражение используется в настройках ярлыка.

Sense Toggle Layout Label

Полный код:

=’$(=$(vBtnLegend(Product, vDim, Product)))’

НА ЗАМЕТКУ! Знак доллара нужен для того, чтобы переменные работали с параметрами.

Имея разные переменные, одно и то же расширение и переменная с легендой кнопок, может использоваться в одном и том же приложении для переключения разных состояний:

Multiple Banks Of Buttons

После того как вы установили переменные, вы можете применять их как вычисляемые измерения в QlikView или динамические выражения в диаграммах Qlik Sense.

На это все на сегодня! Интересных вам разработок с QlikView и Qlik Sense!