Таблица Как вернуть измерение для наивысшего показателя (как вернуть имя для наивысшего балла)?

#tableau-api

#таблица-api

Вопрос:

Допустим, у меня есть эти простые данные:

  ------- ------- --------- 
| Tests | Names | Scores  |
 ------- ------- --------- 
| Test1 | John  |      95 |
| Test1 | Becky |      90 |
| Test2 | John  |      80 |
| Test2 | Becky |      85 |
 ------- ------- --------- 
  

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

Ответ №1:

Самым близким найденным решением было использование фильтра для всей диаграммы (https://community.tableau.com/message/443167#443167 ). С некоторыми изменениями я смог создать и избежать применения фильтра:

Вот решение, которое я придумал. Это 2 шага:

Шаг # 1: Создайте вычисляемое поле, которое является измерением, которое будет действовать как фильтр. Этот фильтр будет иметь значение true, когда учащийся наберет наибольшее количество баллов. Фильтр: [Scores] = {FIXED [Tests] : MAX([Scores])}

Шаг № 2: Создайте вычисляемое поле, которое является измерением, чтобы возвращать имя учащегося, когда фильтр имеет значение true.

 TopStudent: attr(if [Fan] then [Name] END)
  

ATTR избавится от нулей.

(Редактировать: ATTR() возвращает единственное уникальное ненулевое значение, если оно есть, в противном случае отображается «*», чтобы указать, что существует несколько значений. Таким образом, если более одного учащегося получили одинаковый наивысший балл, ATTR() отобразит «*». Если вы хотите показать одно имя ученика в случае ничьих, вам нужно правило разрыва ничьей — например, используйте MIN() или MAX() вместо ATTR(), чтобы выбрать победителей в алфавитном порядке.)

Теперь вы можете использовать это измерение для создания диаграммы, отображающей лучшего ученика, без применения фильтра ко всей диаграмме.

Скриншот в конце