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

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

Название: продажи за предыдущий день мера
Отправлено: 100tsky от 01 февраля 2015, 03:25:01
добрый день!

помогите, вопрос простой, а ответа не могу найти  :)

загружаем таблицу:

дата          подразделение   продажи
1/1/15          А                          100
2/1/15          А                          110

можно ли со стороны qlik sense
построить так:

1. выбираем фильтр и добавляем в него измерение "дата"

2. добавляем таблицу и выбираем измерения "дата", "подразделение"
и меры "продажи" и "продажи за вчера"

3. щелкаем в фильтре дату "2/1/15"

4. в таблице получаем результат вида:

дата      подразделение  продажи     продажи за вчера
2/1/15            А                110                      100

вот что такого нужно написать в мере "продажи за вчера", чтобы там было 100

спасибо большое!
Название: Re: продажи за предыдущий день мера
Отправлено: admin от 01 февраля 2015, 04:58:30
Изучаем Анализ множеств (http://help.qlik.com/sense/ru-RU/online/#../Subsystems/WorkingWith/Content/ChartFunctions/SetAnalysis/AnalyzeSetsOfData.htm%3FTocPath%3D%25D0%25A0%25D0%25B0%25D0%25B1%25D0%25BE%25D1%2582%25D0%25B0%2520%25D1%2581%2520Qlik%2520Sense%7C%25D0%25A1%25D0%25BE%25D0%25B7%25D0%25B4%25D0%25B0%25D0%25BD%25D0%25B8%25D0%25B5%2520%25D0%25B2%25D0%25B8%25D0%25B7%25D1%2583%25D0%25B0%25D0%25BB%25D0%25B8%25D0%25B7%25D0%25B0%25D1%2586%25D0%25B8%25D0%25B9%7C%25D0%2598%25D1%2581%25D0%25BF%25D0%25BE%25D0%25BB%25D1%258C%25D0%25B7%25D0%25BE%25D0%25B2%25D0%25B0%25D0%25BD%25D0%25B8%25D0%25B5%2520%25D0%25B2%25D1%258B%25D1%2580%25D0%25B0%25D0%25B6%25D0%25B5%25D0%25BD%25D0%25B8%25D0%25B9%2520%25D0%25B2%2520%25D0%25B2%25D0%25B8%25D0%25B7%25D1%2583%25D0%25B0%25D0%25BB%25D0%25B8%25D0%25B7%25D0%25B0%25D1%2586%25D0%25B8%25D1%258F%25D1%2585%7C%25D0%2590%25D0%25BD%25D0%25B0%25D0%25BB%25D0%25B8%25D0%25B7%2520%25D0%25BD%25D0%25B0%25D0%25B1%25D0%25BE%25D1%2580%25D0%25B0%2520%25D0%25B4%25D0%25B0%25D0%25BD%25D0%25BD%25D1%258B%25D1%2585%2520%25E2%2580%2594%2520%25D0%25B0%25D0%25BD%25D0%25B0%25D0%25BB%25D0%25B8%25D0%25B7%2520%25D0%25BC%25D0%25BD%25D0%25BE%25D0%25B6%25D0%25B5%25D1%2581%25D1%2582%25D0%25B2%7C_____0)

В этой теме  (http://qlikview-forum.ru/qvf/index.php/topic,464.0.html)косвенно уже затрагивали эту тему.
Например:
Sum({$
<
Date = {'$(=Date(Max(Date)-1))'}
>} [Value])

Вот только если измерение Дата, то этот вариант не пройдет.
Надо подумать.
Название: Re: продажи за предыдущий день мера
Отправлено: 100tsky от 02 февраля 2015, 06:30:46
спасибо!

написал вот сюда, может ответят  :D
http://community.qlik.com/message/705170#705170 (http://community.qlik.com/message/705170#705170)
Current Day Sales Vs Previous Day Sales

Название: Re: продажи за предыдущий день мера
Отправлено: admin от 02 февраля 2015, 07:23:55
Можно и на русском спросить в официальной группе (http://community.qlik.com/groups/qlikview-%D1%80%D0%BE%D1%81%D1%81%D0%B8%D1%8F-%D0%B8-%D1%81%D0%BD%D0%B3-%D0%BF%D0%B0%D1%80%D1%82%D0%BD%D0%B5%D1%80%D1%8B)
Название: Re: продажи за предыдущий день мера
Отправлено: admin от 02 февраля 2015, 09:02:38
Добрый день.

По вашей задаче у меня напрашивается решение на уровне скрипта.
Потребуется создать таблицу с рассчитанными показателями по предшествующим датам.
В этом случае никаких вопросов с формулой не возникнет.


Sales:
LOAD * INLINE [
    Дата, Код, Сумма
    01.01.2015, A, 100
    01.01.2015, B, 233
    01.01.2015, C, 342
    02.01.2015, A, 763
    02.01.2015, B, 234
    02.01.2015, C, 21
    03.01.2015, A, 467
    03.01.2015, B, 23
    03.01.2015, C, 211
];

load Дата, Код, if(Код=Previous(Код),Previous(Сумма)) As LastValue
Resident Sales
Order by Код, Дата;
Название: Re: продажи за предыдущий день мера
Отправлено: 100tsky от 02 февраля 2015, 10:05:11
Да, видно, что рабочее решение
спасибо большое

просто я думал, что есть in-memory решение
но не до жиру  :D
еще раз, спасибо!
Название: Re: продажи за предыдущий день мера
Отправлено: admin от 02 февраля 2015, 10:29:26
Если строить таблицу по другому измерению, то по формуле через анализ множеств работает.
Скажем,
подразделение, сумма сегодня, сумма вчера, сумма по фильтру, сумма по фильтру-1 день назад.

Было бы интересно посмотреть решение без формирования таблицы в скрипте, формулой.
Название: Re: продажи за предыдущий день мера
Отправлено: 100tsky от 03 февраля 2015, 03:03:17
братство кольца предложило 3 варианта

мне пока проще был подход с "previous" при загрузке
отработало ок

спасибо

надо учиться ух-ух
про asoftable еще ничего не читал  :(
Название: Re: продажи за предыдущий день мера
Отправлено: admin от 03 февраля 2015, 09:11:50
Можно еще и так:

Sales:
LOAD *, 'Сегодня'  as Status INLINE [
    Дата, Код, Сумма
    01.01.2015, A, 100
    01.01.2015, B, 233
    01.01.2015, C, 342
    02.01.2015, A, 763
    02.01.2015, B, 234
    02.01.2015, C, 21
    03.01.2015, A, 467
    03.01.2015, B, 23
    03.01.2015, C, 211
];

//left join load Дата, Код, if(Код=Previous(Код),
// Previous(Сумма)) As LastValue
//Resident Sales
//Order by Код, Дата;

load date(Дата+1) As Дата, Код, Сумма,
'Вчера' as Status Resident Sales;


И формулы для всех выражений придется писать с учетом статуса:

Sum ({<Status={'Сегодня'}>}Сумма)
Sum ({<Status={'Вчера'}>}Сумма)