Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 21, 2017, 03:46:02 am

Автор Тема: Подсчет количества значений одного поля, больших соответствующих значений другог  (Прочитано 243 раз)

Оффлайн krumih

  • Новичок
  • *
  • Сообщений: 2
  • Страна: ru
  • Рейтинг: +1/-0
    • Просмотр профиля
У меня есть два столбца экспортированных из БД, в одном из них запрошенная дата доставки, а в другом - реальная дата доставки. Как правильно создать меру, содержащую количество просроченных  доставок, т.е. количество пар, где Запрошенное время < Реальное время?

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

Оффлайн powerlexus

  • Новичок
  • *
  • Сообщений: 12
  • Страна: ua
  • Рейтинг: +2/-0
    • Просмотр профиля
Первый вариант должен работать.
[Дней в запасе/Дней просрочено] - там числовые значения?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Привет
[Дней в запасе/Дней просрочено] - это мера или поле?
Создайте поле в скрипте и все должно сработать ОК.

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


Оффлайн millik

  • Наставник
  • **
  • Сообщений: 53
  • Страна: by
  • Рейтинг: +22/-0
    • Просмотр профиля
Проще всего создать поле-флаг в момент загрузки данных. Тем более если поля с датами - это поля одной таблицы, тогда вообще 1 доп строка в скрипте. Если разных таблиц, конечно придется повозиться. Но зато потом будет быстрый обсчет в самом приложении.

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

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 981
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Мы сейчас запутаем человека  :)
Через скрипт - я имею в виду скрипт загрузки данных.

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

Оффлайн krumih

  • Новичок
  • *
  • Сообщений: 2
  • Страна: ru
  • Рейтинг: +1/-0
    • Просмотр профиля
Проще всего создать поле-флаг в момент загрузки данных. Тем более если поля с датами - это поля одной таблицы, тогда вообще 1 доп строка в скрипте. Если разных таблиц, конечно придется повозиться. Но зато потом будет быстрый обсчет в самом приложении.

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

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

Оффлайн millik

  • Наставник
  • **
  • Сообщений: 53
  • Страна: by
  • Рейтинг: +22/-0
    • Просмотр профиля
Сорян, попутал чего-то. Поправил.

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