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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: mslobogan от 21 июня 2017, 10:51:58

Название: Как сравнить среднее значение по подгруппе(Total) с каждым значением
Отправлено: mslobogan от 21 июня 2017, 10:51:58
Добрый день,
подскажите пож. как можно в Qlik осуществить следующее.

1) как сравнить среднее значение(цена) по подгруппе со значениями(цены) в группе, для выявления кто купил по большей цене чем средняя(Avg(Total)) или меньшей.

я написал такую формулу:

if ([цена без ПДВ]>=Aggr (Avg(TOTAL ([цена без ПДВ]),[ID Access]), 'выше среднего', 'ниже среднего'))

но Qlik по ходу не берет в расчет Total, а сравнивает все значения в группе.

Заранее благодарен.
Название: Re: Как сравнить среднее значение по подгруппе(Total) с каждым значением
Отправлено: Oleg от 23 июня 2017, 09:52:41
Приветствую!
Не совсем понятно зачем Вы используете Aggr() в данном выражении. Более того, зачем его использовать снаружи Avg(). Таким образом, Вы можете получить более 1го среднего значения цены для каждого допустимого ID Access значения.
И похоже что у Вас неправильный синтаксис: Avg(TOTAL ([цена без ПДВ]) - лишняя круглая скобка перед словом "цена".
Рекомендую либо поменять местами Avg и Aggr - если все же нужно учитывать ID Access значения.
Либо убрать Aggr вовсе.
Также формулу Avg можно прописать следующим образом:
Avg(TOTAL <[ID Access]> [цена без ПДВ]) - это выражение будет Вам возвращать среднюю цену внутри каждого значения [ID Access], при условии что ID Access используется как Измерение в диаграмме/таблице.
Название: Re: Как сравнить среднее значение по подгруппе(Total) с каждым значением
Отправлено: mslobogan от 23 июня 2017, 11:40:06
Цитата: mslobogan от 21 июня  2017, 10:51:58  
Добрый день,
подскажите пож. как можно в Qlik осуществить следующее.

1) как сравнить среднее значение(цена) по подгруппе со значениями(цены) в группе, для выявления кто купил по большей цене чем средняя(Avg(Total)) или меньшей.

я написал такую формулу:

if ([цена без ПДВ]>=Aggr (Avg(TOTAL ([цена без ПДВ]),[ID Access]), 'выше среднего', 'ниже среднего'))

но Qlik по ходу не берет в расчет Total, а сравнивает все значения в группе.

Заранее благодарен.
Название: Re: Как сравнить среднее значение по подгруппе(Total) с каждым значением
Отправлено: mslobogan от 23 июня 2017, 11:56:57
Добрый день,
я прикрепил файл, с тем что я делал. Если прописать формулу Avg(TOTAL <[ID Access]> [цена без ПДВ]) как Вы говорите , то она возвращает среднюю цену общюю не включая группы.

А мне необходимо сравнить среднюю цену в группе( я вычислил) с каждой ценой в группе
Название: Re: Как сравнить среднее значение по подгруппе(Total) с каждым значением
Отправлено: millik от 23 июня 2017, 01:53:09
Цитата: mslobogan от 21 июня  2017, 10:51:58  
я написал такую формулу:

if ([цена без ПДВ]>=Aggr (Avg(TOTAL ([цена без ПДВ]),[ID Access]), 'выше среднего', 'ниже среднего'))

но Qlik по ходу не берет в расчет Total, а сравнивает все значения в группе.

Заранее благодарен.

1)
Сразу что бросается в глаза это ошибки в скобках. В конце должна стоять только одна скобка, т.к. закрывается только If. Ещё одна лишняя скобка перед [цена без ПДВ] в функции Avg(). Зато не хватает  скобки после [ID Access], т.к. Aggr не закрыт.

2)
Когда вы используете Aggr() эта функция не видит вашу внешнюю таблицу. Она строит свою временную таблицу. В данном случае из 2 полей: измерения [ID Access] и меры Avg(TOTAL ([цена без ПДВ]).
В данной временной таблице префикс TOTAL работает только на [ID Access].
Попробуйте дописать в эту временную таблицу ещё одно измерение подгруппы, а в префиксе TOTAL исключить поле [ID Access]
Aggr(Avg(TOTAL<[ID Access]> [цена без ПДВ]),[ID Access],[Подгруппа])

3)
Не совсем понятно использование Aggr(), если все измерения и так есть в выходной таблице. Можно оставить просто Avg() расширив блок исключений TOTAL на необходимые измерения.
Aggr() обычно используется когда в конечной таблице другой набор измерений, не тот что нужен для вычисления меры.


Название: Re: Как сравнить среднее значение по подгруппе(Total) с каждым значением
Отправлено: mslobogan от 23 июня 2017, 02:55:21
вы говорите что скобки стоят не правильно, но когда я пишу формулу то Qlik говорит что "Expression ok", второй момент я все перепробовал но результат тот же.
В документации написано что если сравнивать множество с подмножеством и наоборот, то среднее значение "Total" по каждой подгруппе не будет учитываться, а будет браться среднее по всей таблице.

а мне необходимо что бы было так:

цена без ПДВ       об'єм/тара     Avg цена без ПДВ   новая формула
1                                1мл                   4.5                       меньше
2                                1мл                                               меньше
3                                1мл                                               меньше
4                                1мл                                               меньше
5                                1мл                                               больше
6                                1мл                                               больше
7                                1мл                                               больше
8                                1мл                                               больше

есть вариант с екселем, но здесь мне кажется быстрее, если правильно написать формулу.
Название: Re: Как сравнить среднее значение по подгруппе(Total) с каждым значением
Отправлено: millik от 23 июня 2017, 03:07:09
Подготовьте, пожалуйста, небольшой пример скрипта загрузки с тестовыми данными и окончательную таблицу какую вам нужно получить из этих данный.
На словах очень трудно понять, какая у вас вообще модель данных и что вы в итоге хотите увидеть.
Название: Re: Как сравнить среднее значение по подгруппе(Total) с каждым значением
Отправлено: mslobogan от 23 июня 2017, 03:35:09
во вложении ексель.

заранее благодарен