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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: krumih от 13 сентября 2017, 10:06:56

Название: Подсчет количества значений одного поля, больших соответствующих значений другог
Отправлено: krumih от 13 сентября 2017, 10:06:56
У меня есть два столбца экспортированных из БД, в одном из них запрошенная дата доставки, а в другом - реальная дата доставки. Как правильно создать меру, содержащую количество просроченных  доставок, т.е. количество пар, где Запрошенное время < Реальное время?

Искал подобное на просторах интернета, самое лучшее что смог сгенерировать -
count({$<[Дней в запасе/Дней просрочено]={"<0"}>}[Дней в запасе/Дней просрочено])
где Дней в запасе/Дней просрочено - созданная мной мера, содержащая столбец с разностями запрошенной и реальной даты доставки. Такой запрос выдает ошибку(прочерк).
Еще пробовал
count({$<[Дней в запасе/Дней просрочено]={">0"}>}[ShippedDate]),
но такой запрос напротив выдает все количество записей, как просто если бы делал count по ShippedDate.
Аналогично запрос
count({$<[Дней в запасе/Дней просрочено]={">0"}>}[RequiredDate])
Выдает количество всех существующих запрошенных дат в базе.
Уже третий день с этим мучаюсь, спасибо.
Название: Re: Подсчет количества значений одного поля, больших соответствующих значений другог
Отправлено: powerlexus от 14 сентября 2017, 10:53:22
Первый вариант должен работать.
[Дней в запасе/Дней просрочено] - там числовые значения?
Название: Re: Подсчет количества значений одного поля, больших соответствующих значений другог
Отправлено: admin от 14 сентября 2017, 11:22:22
Привет
[Дней в запасе/Дней просрочено] - это мера или поле?
Создайте поле в скрипте и все должно сработать ОК.
Название: Re: Подсчет количества значений одного поля, больших соответствующих значений другог
Отправлено: millik от 14 сентября 2017, 01:35:53
Проще всего создать поле-флаг в момент загрузки данных. Тем более если поля с датами - это поля одной таблицы, тогда вообще 1 доп строка в скрипте. Если разных таблиц, конечно придется повозиться. Но зато потом будет быстрый обсчет в самом приложении.

Если хочет именно через меру, то я бы сделал через агрегацию. Как-нибудь так (писал от руки):
Sum(Aggr(If([RequiredDate]<[ShippedDate],1,0),[OrderID]))
И тогда если в измерении у нас покупатель, то эта мера вернут количество просроченных заказов для каждого покупателя.
Название: Re: Подсчет количества значений одного поля, больших соответствующих значений другог
Отправлено: admin от 14 сентября 2017, 01:58:22
Мы сейчас запутаем человека  :)
Через скрипт - я имею в виду скрипт загрузки данных.

Меры в приложении - это уже выражения мер, в которых можно использовать aggr(), в скриптах для этих целей используются другие операторы.
Название: Re: Подсчет количества значений одного поля, больших соответствующих значений другог
Отправлено: krumih от 15 сентября 2017, 09:03:46
Цитата: millik от 14 сентября  2017, 01:35:53  
Проще всего создать поле-флаг в момент загрузки данных. Тем более если поля с датами - это поля одной таблицы, тогда вообще 1 доп строка в скрипте. Если разных таблиц, конечно придется повозиться. Но зато потом будет быстрый обсчет в самом приложении.

Если хочет именно через скрипт, то я бы сделал через агрегацию. Как-нибудь так (писал от руки):
Sum(Aggr(If([RequiredDate]<[ShippedDate],1,0),[OrderID]))
И тогда если в измерении у нас покупатель, то эта мера вернут количество просроченных заказов для каждого покупателя.

Спасибо большое. Сработало прямо таки вашим выражением). Сам пытался нечто подобное, но не правильно использовал Aggr(). Дополнительных полей на этапе еще загрузки создавать не хотелось, хотелось чтобы получилось уже вот так на моменте работы с уже загруженными данными.
Название: Re: Подсчет количества значений одного поля, больших соответствующих значений другог
Отправлено: millik от 15 сентября 2017, 10:42:10
Сорян, попутал чего-то. Поправил.