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

Предложенный шаблон будет работать как в QlikView, так и в Qlik Sense.

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

FirstSortedValue.zip

Расчет итогов: кейсы применения

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

Расчет итогов: шаблон решения с FirstSortedValue

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

НА ЗАМЕТКУ! Возвращает первое значение порядка загрузки expression для ряда записей, как определено выражением group by. Если текстовые значения не найдены, возвращается NULL. Эта функция доступна только как функция скрипта.

Шаблон:

if(max(Date_Base)=max(total <$(='[‘ & getobjectfield(0) & ‘]’)> Date_Base),
firstsortedvalue(aggr(sum(total < Date_Base,Secondary_Dim> m_ticket), Date_Base, Secondary_Dim), –aggr(max(Date_Base), Secondary_Dim, Date_Base)))

Параметры настроек под разные случаи:

sum(m_ticket) Используйте свое выражение. Обычно это будет сумма или расчет итогов. Вам нужно будет вставить итог и связанную группу по полю или полям в ваше выражение.
<$(= [ & getobjectfield(0) & ])> Эту часть вы можете использовать «как есть» или скрыть. Эта часть выражения используется, если у вас есть график, распределяющий данные по времени. Измерение даты должно идти вначале для диаграммы.
Date_Base Когда вы видите Date_Base, вам нужно заменить измерение времени из вашей модели данных.
Secondary_Dim[,nth_Dim] Это вторичные измерения, которые не связаны с измерением даты. Отделяются друг от друга запятой.

Итак, как же это работает.

Текущие открытые запросы без измерения

В этом примере мы используем другой подход к написанию выражения:

http://livingqlikview.com/wp-content/uploads/2017/04/Current-Count-Syntax-01.png

Например, в этом случае мы используем функцию FirstSortedValue:

http://livingqlikview.com/wp-content/uploads/2017/04/Current-Count-Syntax-02.png

Обратите внимание, что  <$(= [ & getobjectfield(0) & ])> скрыто, а второго измерения нет в итоговых полях или списка агрегации.
http://livingqlikview.com/wp-content/uploads/2017/04/Current-Count-Visualization-01a.png

Текущие открытые запросы с измерениями (без времени) 

В этом примере я добавил измерение. При этом запросы не отражаются по временной шкале.

http://livingqlikview.com/wp-content/uploads/2017/04/Current-Count-Syntax-03.png

Единственная разница в этом случае в том, что я добавил другое поле к итогам и параметрам агрегации.

http://livingqlikview.com/wp-content/uploads/2017/04/Current-Count-Visualization-02a.png

Текущие открытые запросы по времени

В этом примере мы показываем открытые запросы, распределенные по времени (по месяцам).

http://livingqlikview.com/wp-content/uploads/2017/04/Historical-Count-Syntax-04.png

Итак, у нас просуммированы запросы по месяцам и сгруппированы по статусам.

http://livingqlikview.com/wp-content/uploads/2017/04/Historical-Count-Visualization-01a.png

Текущие открытые запросы по времени с динамической датой

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

Итак, для этого используем специальную функцию GetObjectField. Итоговое выражение будет иметь такой вид:

http://livingqlikview.com/wp-content/uploads/2017/04/Historical-Count-Syntax-05.png

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

http://livingqlikview.com/wp-content/uploads/2017/04/Historical-Count-Visualization-02a.png

На этом все на сегодня. Отличных вам разработок с Qlik!