Подсчет количества значений одного поля, больших соответствующих значений другог

Автор krumih, 13 сентября 2017, 10:06:56

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

krumih

У меня есть два столбца экспортированных из БД, в одном из них запрошенная дата доставки, а в другом - реальная дата доставки. Как правильно создать меру, содержащую количество просроченных  доставок, т.е. количество пар, где Запрошенное время < Реальное время?

Искал подобное на просторах интернета, самое лучшее что смог сгенерировать -
count({$<[Дней в запасе/Дней просрочено]={"<0"}>}[Дней в запасе/Дней просрочено])
где Дней в запасе/Дней просрочено - созданная мной мера, содержащая столбец с разностями запрошенной и реальной даты доставки. Такой запрос выдает ошибку(прочерк).
Еще пробовал
count({$<[Дней в запасе/Дней просрочено]={">0"}>}[ShippedDate]),
но такой запрос напротив выдает все количество записей, как просто если бы делал count по ShippedDate.
Аналогично запрос
count({$<[Дней в запасе/Дней просрочено]={">0"}>}[RequiredDate])
Выдает количество всех существующих запрошенных дат в базе.
Уже третий день с этим мучаюсь, спасибо.

powerlexus

Первый вариант должен работать.
[Дней в запасе/Дней просрочено] - там числовые значения?

admin

Привет
[Дней в запасе/Дней просрочено] - это мера или поле?
Создайте поле в скрипте и все должно сработать ОК.

millik

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

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

admin

Мы сейчас запутаем человека  :)
Через скрипт - я имею в виду скрипт загрузки данных.

Меры в приложении - это уже выражения мер, в которых можно использовать aggr(), в скриптах для этих целей используются другие операторы.

krumih

Цитата: millik от 14 сентября  2017, 01:35:53  
Проще всего создать поле-флаг в момент загрузки данных. Тем более если поля с датами - это поля одной таблицы, тогда вообще 1 доп строка в скрипте. Если разных таблиц, конечно придется повозиться. Но зато потом будет быстрый обсчет в самом приложении.

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

Спасибо большое. Сработало прямо таки вашим выражением). Сам пытался нечто подобное, но не правильно использовал Aggr(). Дополнительных полей на этапе еще загрузки создавать не хотелось, хотелось чтобы получилось уже вот так на моменте работы с уже загруженными данными.


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