Фильтрация по вычисляемой мере с использованием нескольких полей в Qlik Sense

Я пытаюсь использовать вычисляемую меру как способ фильтрации данных, но это выглядит сложнее, чем ожидалось. Позвольте мне объяснить на примере.

У меня есть данные следующего типа с двумя измерениями - одно - уникальный идентификатор, другое - категория - и четыре меры.

Исходная таблица

Мой первый шаг - ранжировать каждый элемент по его баллам, при этом рейтинг оценивается в той же категории. Поэтому я создаю новую меру:

=aggr(rank(sum(Score1)), Category, UniqueID)

Я делаю это для всех трех оценок, в результате чего получаются три новых расчетных показателя. Моя последняя расчетная мера - это среднее значение трех рейтингов. Под примером рассчитанный показатель интереса выделен жирным шрифтом. Обратите внимание, что в моих реальных расчетах я напрямую оцениваю «New Measure», не создавая промежуточные столбцы «RankingScore».

Данные с недавно рассчитанным показателем

Обратите внимание, что эта мера сложна, поскольку она изменяется в соответствии с предыдущим выбором. Скажем, например, что я выбираю только записи с «Amount»> 1000. Изменится относительный рейтинг и, следовательно, «New Measure».

В моем фактическом приложении мне нужно отфильтровать свои записи по «Новой мере» после того, как я сделал некоторые предыдущие выборки в таких полях, как «Сумма». Если бы это было просто поле, я бы обычно создал панель фильтра, мы использовали бы расширение qsVariable, чтобы иметь диапазон слайдов, чтобы выбрать только строки с «Новой мерой» выше установленного порога. К сожалению, похоже, что я не могу этого сделать с моей расчетной мерой.

Как бы вы подошли к проблеме? Мне, например, было интересно, можно ли «преобразовать» мою новую меру в фактическое поле после того, как были сделаны все предыдущие выборки, но, возможно, это ерунда.

Заранее спасибо и извиняюсь за длинный пост!


person etste    schedule 07.10.2016    source источник
comment
Я не уверен, чего вы пытаетесь достичь, но вам может потребоваться пересмотреть свою модель данных, возможно, попробовать отдельный вопрос с примерами данных и обсудить цель, может быть другой способ подойти к этому   -  person Chris J    schedule 11.10.2016


Ответы (2)


Если я правильно понимаю, я считаю, что это решение должно работать:

  1. Создайте переменную для своего слайдера: new_measure_slider.
  2. Создайте новый объект листа -> объект слайдера / календаря.
  3. Настройте слайдер для управления новой переменной new_measure_slider.
  4. Создайте вычисляемое измерение в своей диаграмме, заменив формулу «Новая мера» (указанная вами величина является средним значением для трех рангов). Это должно быть такое условие: =if(aggr([your average formula here], Category, UniqueID) >= new_measure_slider, [Category], null()). По сути, сравните свою формулу с переменной new_measure_slider. Если true, используйте категорию (или UniqueID, в зависимости от того, что вам нужно) в качестве измерения, если false, null().
  5. Установите флажок «Подавить, когда значение равно нулю» в новом измерении. Это ключ. Это то, что на самом деле будет фильтровать вашу диаграмму.
  6. В свойствах диаграммы на вкладке «Презентация» щелкните новое вычисленное измерение и нажмите «Скрыть столбец». Нам не нужно этого видеть, потому что мы используем это только как фильтр.
person bdiamante    schedule 11.10.2016
comment
Извините, нажал клавишу ввода до завершения ввода! В конце я использую что-то очень похожее на то, что вы предложили на шаге 4, то есть условный оператор с моей формулой, который сравнивается с переменной. В тестовом образце, где я воссоздал проблему, это решение работает нормально. В моем фактическом наборе данных я наблюдаю странное поведение. Если, например, мой 'new_measure_slider' установлен на 80, я бы получил несколько строк, для которых моя формула дает 75, 70. Не совсем уверен, что вызывает это. - person etste; 12.10.2016
comment
Какое поле вы используете в качестве параметра True в формуле вычисляемого размера? Если вы используете категорию, возможно, что один из уникальных идентификаторов превышает пороговое значение в одной из категорий, но, поскольку Категория является измерением, он также вытягивает те, которые ниже порогового значения. В этом случае переключите его на UniqueID в формуле измерения. - person bdiamante; 12.10.2016
comment
Кажется, теперь все работает нормально. Я не агрегировал свое условие, как на вашем шаге 4. Как только я это изменил, проблема, казалось, была решена. Спасибо, это была настоящая головная боль. - person etste; 13.10.2016
comment
Это огромная головная боль для того, что, кажется, должно быть основной функциональностью. Это настолько громоздко в настройке (особенно если у вас есть несколько ползунков / измерений, по которым вы хотите фильтровать), что каждый раз, когда я думаю о добавлении этого в диаграмму или график, мне приходится выделять полдня или около того. По крайней мере, сейчас он работает, и все это было не напрасно ... тоже было много раз. Такова жизнь с Qlik. - person bdiamante; 13.10.2016

Вы можете указать QV игнорировать вашу фильтрацию в поле «Сумма», добавив «Amount =» в свой анализ набора.

Я не знаю, как выглядит ваш средний расчет, но возможно:

(aggr(rank(sum({<Amount=>} Score1)), Category, UniqueID) + 
aggr(rank(sum({<Amount=>} Score2)), Category, UniqueID) + 
aggr(rank(sum({<Amount=>} Score3)), Category, UniqueID)) / 3
person mickeger    schedule 11.10.2016
comment
Спасибо @mickeger. Однако на самом деле меня интересует сохранение фильтрации в поле «Сумма». - person etste; 11.10.2016