Неофициальный форум пользователей Qlik Sense & Qlikview

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: d.pimkin от 09 апреля 2015, 03:56:32

Название: Aggr и Total ( Qlikview )
Отправлено: d.pimkin от 09 апреля 2015, 03:56:32
Всем доброго времени суток!

Возник такой вопрос: как применить функцию AGGR для всех записей измерения?
Есть поле АТМ и EventDiff. Но не для всех АТМ есть EventDiff.
Вот мне нужно выбрать те, для которых его нет (тоже самое, что сумма равна 0, т.к. нулевых значений нет)

Следующий код результатов не выдает, т.к. не находит таких результатов. Можно ли как-нибудь aggr применить для всех записей? Или как-то по-другому решить задачу.

if(aggr((sum({<EventFromDateTime = {'>=$(vFromDate)<$(vToDate)'}>} EventDiff)),ATM)=0,ATM)
Так тоже не получается...
=if(IsNull(EventDiff),ATM)
Название: Re: Aggr и Total
Отправлено: admin от 09 апреля 2015, 11:50:59
День добрый.
Не совсем понятно, в каком виде вы хотите увидеть результат и с каких данных.
Для простого примера:

LOAD * INLINE [
    ATM, diff
    00002, 0:01:20
    00003, 1:00:00
    00004,
    00005, 0
    00006, 0:02:10
    00007, 0:03:11
    00008
    00009, 0
];

Простое выражение в списке
=if(diff=0 or diff='',ATM)
даст "нулевые" АТМ.
Название: Re: Aggr и Total
Отправлено: d.pimkin от 10 апреля 2015, 03:29:12
Я понял, где у меня ошибка была: надо было AGGR применять на 2 измерения.
Название: Re: Aggr и Total
Отправлено: admin от 10 апреля 2015, 07:20:39
Вы имели в виду случаи, когда для нескольких записей с одинаковым АТМ все diff нулевые?
Название: Re: Aggr и Total
Отправлено: d.pimkin от 10 апреля 2015, 11:59:09
Да, именно так. Простите, что сформулировал коряво, точнее не описал исходные данные.
Название: Re: Aggr и Total
Отправлено: admin от 10 апреля 2015, 12:06:23
 :) Да с данными было бы понятнее.
Подозреваю, что у многих читающих вопросов еще больше возникло по Aggr().
Если не трудно, можете выложить фрагмент кода и выражение для понимания сути разговора.
Название: Re: Aggr и Total
Отправлено: d.pimkin от 13 апреля 2015, 12:26:31
=if(isnull(aggr((sum({<EventFromDateTime = {'>=$(vFromDate)<$(vToDate)'}>}EventDiff)),ATM,hostid)),ATM)

Дело было в том, что, если в измерении AGGR применить только на поле ATM, а в выражении добавить только EventDiff, то те что null не показывались, т.к. таких пар измерение-выражение не было в таблице. Но, как только я добавил в AGGR еще одно поле (которое является ключем и имеет записи по всем АТМ), я получил результат, который и хотел.