Фишки с подстановкой имен мастер-мер

Как известно, начиная с февраля 2021, в Qlik Sense появился функционал подстановки меток мастер мер в выражения. Что это значит? Например, у вас есть формула выручки типа такой:

Sum({<[Дата.Type]= {"РЕА.Дата реализации"},[НакопительныйИтог]= {"STD"}>} [РЕА.Выручка с НДС])

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

Раньше для такого функционала использовались переменные. По сути, эффект был таким же, но с рядом неудобств, например в виде отсутствия поиска по списку переменных (в отличие от списка мастер-мер).

Помещение формулы в переменную
Подстановка переменной в выражение

В общем появление этого функционала для мастер-мер сделало разработку более удобной, потому что ими проще пользоваться, чем переменными — ведь они видны в списках при добавлении объектов. Также, в отличие от переменных, мастер-мера помимо формулы содержит формат числа, настройки цвета, настройки метки (подписи). В этой статье мы разберем, как выжать из этого функционала ВСЕ что можно 🙂

1. Задавайте мерам исчерпывающие имена

Имена должны быть достаточно емкими и исчерпывающими с самого начала. Например, вам выгрузили данные, в которых есть поле типа Выручка с НДС. Вы по нему делаете меру типа sum([Выручка с НДС]). Т.к. другой выручки к вас в приложении нет, есть соблазн назвать меру просто Выручка.

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

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

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

2. Используйте метки для задания пользовательских имен мер

И так, мы создали меру с именем «Выручка с НДС с учетом возвратов и бонусов». Сразу всем понятно что там. Но выводить эту подпись на диаграммы — не всегда гуманно.

Мы можем повлиять на выводимую подпись меры через поле Выражение метки.

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

3. Вы можете создать уникальные подписи меры на каждой диаграмме

А теперь первая фишка, по-настоящему завязанная на функционал подстановки мер. Что делать, если на конкретном графике нам нужна одна подпись, а на другом — другая? Не создавать же 2 варианта меры с разными метками. Действуем так. Сначала разрываем связь мастер-меры с библиотекой.

Мера станет доступной для редактирования.

Нужно зайти в редактор выражения меры и заменить формулу на имя мастер-меры.

Таким образом, формула показателя все равно тянется из библиотеки мастер-мер. Но метку для нее мы задаем индивидуально для той диаграммы, где она используется.

4. Создавайте формулы на базе имен других мастер-мер.

Так, формула для среднего чека может выглядеть следующим образом:

И эту формулу тоже можно сохранить как мастер-меру.

5. Не создавайте дубликаты формул с условием total

Часто для задач аналитики требуется создавать варианты формул. Например, если мы захотим считать долю от выручки, нам потребуется вариант формулы типа sum(total Выручка).

Создавать под нее отдельную мастер-меру нецелесообразно. А прописывание формулы в явном виде лишает нас преимущества единого источника формулы. Если вам нужен полный total по конкретной мере, то можно получить его конструкцией $(=Мера).

Вот пример:

Если требуется создать сценарий total с частичной группировкой, можно использовать для него формулы следующего вида:

aggr(nodistinct [Выручка с НДС с учетом бонусов и возвратов],[Город])

Результат:

6. Используйте имена мер с aggr для вложенного агрегирования

Вы уже поняли, что имена мер очень удобно размещать внутри функции aggr(). Очевидно, что формулы типа

Median(aggr([Выручка с НДС с учетом бонусов и возвратов],[Сотрудник]))

Отлично подойдут для расчетов опорных линий, динамических уровней осей и прочих сценариев вложенного агрегирования, вроде расчетов стандартного отклонения и т.д.

7. Используйте метку меры для подстановки через переменные

Любите создавать кнопки-переключатели? Теперь сделать переключатель мер намного проще, т.к. вы можете использовать в качестве значения переменной не всю формулу, а имя нужной меры. Для этого удобно использовать виджет Variable Input из Qlik Dashboard Bundle.

Разместив в выражении подстановку переменной типа [$(vSelectMeasure)], мы добьемся вызова соответствующей меры. Переменная взята в квадратные скобки чтобы исключить риск неработающего выражения, когда название меры состоит из нескольких слов.

8. Использование поиска по мере

А вы знали, что в любой форме поиска в фильтре можно использовать поиск по выражениям?

Это работало и раньше, с формулами. Можно было написать что-то вроде «=sum(Sales)>1000», и в фильтре отбирались наименования, для которых сумма продаж по этому выражению соответствует условию >1000.

Теперь же мы можем заменить выражение на понятную метку, и даже презентовать этот функционал бизнес-пользователям. Однако скорее всего для них придется создать специальные меры с сокращенными названиями потому что набрать без подсказок [Выручка с НДС с учетом бонусов и возвратов] с соблюдением регистра и порядка слов — задача не из легких. И про квадратные скобки надо не забыть.

Поэтому можно создать мастер-меру с простым названием типа «Выручка», которая будет содержать метку меры [Выручка с НДС с учетом бонусов и возвратов]. Не то чтобы это жизненно необходимый функционал, но некоторым продвинутым пользователям может прийти по вкусу.

А вот нам как разработчикам это очень сильно облегчит жизнь, потому что теперь можно писать вот такие формулы:

count(distinct {<[Клиент]={"=[Выручка]>=100000"}>} Страна)

Эта формула посчитает нам кол-во стран, в которых есть клиенты с выручкой больше или равной 100000. Обратите внимание что Выручка в данном случае — это мера, а не поле модели данных.

Также, в случае сложных формул этот подход позволяет решить конфликты синтаксиса, например когда из-за двойных кавычек во вложенной формуле ошибочно интерпретируется синтаксис всего выражения. Просто прячем сложные формулы в меры, и конфликта нет. С переменными кстати этот способ не пройдет, потому что в случае с переменными оценивается итоговое значение после подстановки переменных, а значит конфликт кавычек никуда не денется.

Заключение

Подстановка имен мер — мощнейший функционал, упрощающий разработку и поддержку приложений. Единственное, чем он уступает переменным как способу подстановки выражения — в мастер-мерах нельзя задать динамические параметры типа $1,$2 и т.д., в которые можно было бы подставлять пользовательские значения при вызове меры. В остальном, я настоятельно рекомендую внедрять именно его, и отходить от практики хранения выражений в переменных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *