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

Как известно, начиная с февраля 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. Обратите внимание что Выручка в данном случае — это мера, а не поле модели данных.

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

9. Внешний анализ множеств.

В 2022 году была введена возможность использовать анализ множеств вне агрегирующего выражения, причем с наследованием.

Например, у нас есть мастер-мера Выручка с формулой sum(Сумма_продаж). Что если мы хотим на визуализацию вывести сумму продаж за 2023 год? Раньше мы писали анализ множеств, вроде такого:

sum({<[Год]={2023}>} Сумма_продаж)

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

  1. Либо у нас появляется множество непривязанных к ОЭ мер (различные вариации основных мер);
  2. Либо ОЭ захламляются множеством вариантов одной меры: Продажи, Продажи прошлый год, Продажи в Казани и т.д.

Теперь, в актуальных версиях Qlik, анализ множеств может находиться вне агрегации:

{<[Год]={2023}>} sum(Сумма_продаж)

Более того, такой анализ множеств наследуется всей конструкцией, если она взята в скобки. Вот такая формула вернет среднюю сумму продаж по клиенту за 2023 год.:

{<[Год]={2023}>} (sum(Сумма_продаж)/count(distinct Клиент))

И конечно, это работает для мастер мер. Вот такая формула (где Выручка — это мастер мера) вернет нам выручку за 2023 год.

{<[Год]={2023}>}[Выручка]

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

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

Заключение

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

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

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

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.