Aggr и Total ( Qlikview )

Автор d.pimkin, 09 апреля 2015, 03:56:32

« назад - далее »

d.pimkin

Всем доброго времени суток!

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

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

if(aggr((sum({<EventFromDateTime = {'>=$(vFromDate)<$(vToDate)'}>} EventDiff)),ATM)=0,ATM)
Так тоже не получается...
=if(IsNull(EventDiff),ATM)

admin

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

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)
даст "нулевые" АТМ.

d.pimkin

Я понял, где у меня ошибка была: надо было AGGR применять на 2 измерения.

admin

Вы имели в виду случаи, когда для нескольких записей с одинаковым АТМ все diff нулевые?

d.pimkin

Да, именно так. Простите, что сформулировал коряво, точнее не описал исходные данные.

admin

#5
 :) Да с данными было бы понятнее.
Подозреваю, что у многих читающих вопросов еще больше возникло по Aggr().
Если не трудно, можете выложить фрагмент кода и выражение для понимания сути разговора.

d.pimkin

=if(isnull(aggr((sum({<EventFromDateTime = {'>=$(vFromDate)<$(vToDate)'}>}EventDiff)),ATM,hostid)),ATM)

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

Яндекс.Метрика