#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(), чтобы выбрать победителей в алфавитном порядке.)
Теперь вы можете использовать это измерение для создания диаграммы, отображающей лучшего ученика, без применения фильтра ко всей диаграмме.