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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: nemp от 27 марта 2019, 01:27:34

Название: Выбор исключаемых значений в Set Analysis
Отправлено: nemp от 27 марта 2019, 01:27:34
Всем привет!
Помогите найти оптимальное решение типовой задачи. Я хочу исключить из расчета некоторые значения чего-бы то ни было. Для этого делаю альтернативное состояние St1 и присваиваю это состояние объекту типа "Список".
И пишу, к примеру, выражение: sum({1-St1} Revenue)
Все хорошо, когда в списке что-то выбрано. Но проблема в том, что если в состоянии St1 не выбрано ничего, то считается, что выбрано всё, и моя сумма, естественно обнуляется.
Как проще всего сказать клику, что если в состоянии не выбрано ничего, то это значит, что не выбрано ничего! :)
На языке множеств задача звучит так: Есть множество А и его подмножество B. Необходимо построить множество Д, которое пусто, когда A=Б, и равно Б в остальных случаях.
Спасибо!
Название: Re: Выбор исключаемых значений в Set Analysis
Отправлено: admin от 27 марта 2019, 02:31:48
Цитата: nemp от 27 марта  2019, 01:27:34  Всем привет!
Помогите найти оптимальное решение типовой задачи. Я хочу исключить из расчета некоторые значения чего-бы то ни было.
Альтернативные состояния - как слои в фотошопе. Если вы включили объект в слой, то все остальные объекты должны быть либо в этом слое, либо в выражениях это должно учитываться.
Для вашей задачи исключения достаточно использовать анализ множеств.
например sum({<Group-={"Исключаемое"}>} Revenue)
Название: Re: Выбор исключаемых значений в Set Analysis
Отправлено: nemp от 27 марта 2019, 02:56:48
Виноват, не понял. Что такое "Исключаемое" в Вашем выражении? Это же пока просто строка...
Должно же быть альтернативное состояние с этим названием, или закладка. А если так, то почему не написать без знака "=" и кавычек?
Название: Re: Выбор исключаемых значений в Set Analysis
Отправлено: admin от 27 марта 2019, 04:11:52
Для чего Вы хотите использовать альтернативные состояния?

Похоже я не понял вопрос.

Если требуется выражение считать только в случае выборки в альтернативном состоянии, можно проверить состояние выборки функцией из серии getselect.... по хелпу посмотрите.
Т.е. если в альтернативном выбрано getcurrentselections({Состояние})>0 то считаем, иначе нет.
Название: Re: Выбор исключаемых значений в Set Analysis
Отправлено: nemp от 27 марта 2019, 04:22:28
Цитата: admin от 27 марта  2019, 04:11:52  Для чего Вы хотите использовать альтернативные состояния?
Попробую короче сформулировать задачу: у меня на экране список, к примеру, городов (City). И сумма выручки sum(Revenue).
Мне нужно, чтобы сумма считалась БЕЗ выбранных в списке городов. Я решил это просто: присвоил списку альтернативное состояние st1 и записал сумму так: sum({$-st1} Revenue).
Проблема только в том, что если не выбран ни один город, эта сумма - ноль. А должна быть равна общей выручке по всем городам.
Название: Re: Выбор исключаемых значений в Set Analysis
Отправлено: admin от 27 марта 2019, 04:31:37
сделайте разницу сумм от общей вычитайте выборку по альтернативе
Название: Re: Выбор исключаемых значений в Set Analysis
Отправлено: nemp от 27 марта 2019, 05:03:24
В итоге вот такой "уродец" получился:
Sum({$-St1*$(=isnull(GetCurrentSelections('_','_','_',1,'St1'))+1)} Revenue)Выражение под $() принимает значение 0 (т.е. пустое множество), когда ничего не выбрано, и 1 - когда что-то выбрано.
Работает.
Но не уверен, что такое решение оптимально с точки зрения производительности :(
Спасибо!