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