问题描述
对整体的排序的文本表,当我们筛选掉第一名,第二名就会来充当第二名,随后数据进行了重新的排序,这个是因为tableau筛选顺序的原因,维度筛选大于表计算筛选,如下所示:
当我们过滤掉第一iphone的时候,第二就会充当第一名。
而我们想要的是当我们去掉第一phones 的时候,第二排名不变(保持原有的排名),如下:
问题分析
当我们在表计算进行筛选时候,视图会根据我们的操作来就行相应的视图计算。我们需要知道Tableau筛选的顺序:
因为我们的Sub-category是维度,故在表计算之前的维度筛选时候我们就进行排序。在此之前怎么排序呢?这个时候我们用到了lookup()和max()函数。
具体操作
1.先写一个排序字段:排序
// 默认降序
RANK(SUM([Sales]),'desc')
2.这里的排序字段其实就是默认的表计算字段,然后将排序字段改成维度,分别将排序,和Sub-category拖入行,双击Sales字段。构建如下所示:
3.创建一个保留排名字段:
//这里筛选最大的Sub-Category,后面的偏移量0,代表自己
LOOKUP(MAX([Sub-Category]),0)
4.随后将保留排名字段拖入筛选器当中,显示筛选值,测试一下
总结
因为此时显示的已经是咱们在维度筛选计算好的值,所以当我们筛选的时候,里面的排名值不会随筛选值的减少而重新排序。