假设我有这么简单的数据:
+-------+-------+---------+
| Tests | Names | Scores |
+-------+-------+---------+
| Test1 | John | 95 |
| Test1 | Becky | 90 |
| Test2 | John | 80 |
| Test2 | Becky | 85 |
+-------+-------+---------+
我想写一个计算字段,该字段将返回每个考试中得分最高的学生的姓名。我想这样做而不对整个图表应用过滤器。
答案 0 :(得分:2)
找到最接近的解决方案是在整个图表上使用过滤器(https://community.tableau.com/message/443167#443167)。通过一些修改,我能够构建并避免应用过滤器:
这是我提出的解决方案。这是两步:
第1步:创建一个计算字段,该字段是一个尺寸,用作过滤器。当学生得分最高时,此过滤器将为true。
过滤:[Scores] = {FIXED [Tests] : MAX([Scores])}
第2步:创建一个计算字段,它是一个Measurement,用于在过滤器为true时返回学生的姓名。
TopStudent: attr(if [Fan] then [Name] END)
ATTR将摆脱NULL。
(编辑:ATTR()返回单个唯一的非空值(如果有),否则显示“*”表示有多个值。所以如果多个学生得到同样的最高值得分,ATTR()将显示“*”。如果你想在关系的情况下显示一个学生姓名,你需要一个打破平局规则 - 例如,使用MIN()或MAX()而不是ATTR( )按字母顺序选出获胜者。)
现在,您可以使用此度量来创建图表,显示最佳学生,而不对整个图表应用过滤器。