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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: piton от 03 февраля 2015, 03:44:31

Название: Количество дней на остатках.
Отправлено: piton от 03 февраля 2015, 03:44:31
Здравствуйте!
Есть товарный отчет где имеются показатели:
Входящий остаток, приход, возврат, списание, исходящий остаток. Выводится сводной таблицей и остаток расчитывается выражением используя "SUM({<[Дата] = {"<$(=[ДатаС])"}>} .... Все приходы минус все расходы со дня открытия магазина". Отчет выводит данные за период "ДатаС" и "ДатаПо".
Сейчас просят добавить колонку "Количество дней за период когда товар был на остатках". Получается нужно чтобы на каждую дату в период С - По Просчитались остатки и просумировались дни когда остаток больше нуля. Можно ли это сделать не задавая новую таблицу с остатками на каждый день?
Название: Re: Количество дней на остатках.
Отправлено: admin от 03 февраля 2015, 03:47:56
Хороооший вопрос.
А какая модель, какие исходные данные?

Если надо посчитать количество дней когда был остаток товара, то, думаю, без обработки сведений в скрипте не обойтись.
Я встречал на официальном сайте заявления о том. что остатки считаются формулами, но живых примеров не видел.
Считаю, что лучше будет подготовить такую таблицу в скрипте.
Название: Re: Количество дней на остатках.
Отправлено: piton от 03 февраля 2015, 04:30:30
Платформа QlikView 10. Данные отдельно таблица с календарем. И отдельная таблица где на каждую дату различные движения товаров, разными строчками. Я тоже отталкиваюсь от создания таблицы с остатками на каждый день. Минусы что теряется время на обновление такой таблицы и будет отъедать прилично памяти, так как дополнительных данных выйдет очень много.
Название: Re: Количество дней на остатках.
Отправлено: piton от 03 февраля 2015, 04:34:42
Остатки считаются так:
Входящий остаток:
Sum({<[Дата] = {"<$(=[ДатаС])"}>} [Кол-во движения товара прихода])
- Sum({<[Дата] = {"<$(=[ДатаС])"}>} [Кол-во движения товара реализация])
- Sum({<[Дата] = {"<$(=[ДатаС])"}>} [Кол-во движения товара выбытие])
- Sum({<[Дата] = {"<$(=[ДатаС])"}>} [Кол-во движения товара перемещение])
+ Sum({<[Дата] = {"<$(=[ДатаС])"}>}[Кол-во движения товара исходящий остаток])

Соответственно в исходящем ДатаС меняется на ДатаПо.
Название: Re: Количество дней на остатках.
Отправлено: admin от 03 февраля 2015, 06:42:06
А зачем каждый раз пересчитывать таблицу с остатками.
Можно рассчитать остатки за предыдущие периоды и держать их в qvd-формате.
Расчет остатков текущего периода не должен вызвать проблем.
Память займется остатками, это факт.
Но как поведет себя приложение с расчетом остатков на каждый день выражениями?
Название: Re: Количество дней на остатках.
Отправлено: piton от 16 февраля 2015, 04:37:56
Создал таблицу, обновляю только за открытый период, по времени около часа. В выражении работает.

count({<[Дата остаток] = {">=$(=[ДатаС])<=$(=[ДатаПо])"}>}[Остаток на дату])
В отчет загружаю данные только с остатком, в итоге просто подсчитываю количество записей за период.
По памяти нагрузка увеличилась на треть.