【Tableau排序】排序与筛选-rank与index

说明:如何通过index或者rank实现多级别筛选,同时结合在第二级别建立TOP规则。

以Tableau超市数据为例,希望按照省份、城市排序,显示销售额;同时能只看每个城市的TOP5.

【Tableau排序】排序与筛选-rank与index

 

1、为什么默认的排序容易出错?官方的排序逻辑是什么?

我们拖入省字段和城市字段,按照城市降序排列,可能会出现如下的排序错乱。

为什么?仔细看一下发现,只有城市右侧有降序标记,而“省/自治区”旁边没有;同时,洛阳实际上是属于多个省份的,它的销售数据同时出现在了多个省份中。河南洛阳103089+广东洛阳61715=164804,刚刚属于下图的第三名(当然,洛阳也可能出现在更多的省份中)。

也就是说,Tableau的默认排序是基于全局的排序,基于单个字段的排序,在这个案例中,相当于是 基于城市的维度之后,按照{exclude [省/自治区]:sum[销售额]}计算总额后排序的。

 

【Tableau排序】排序与筛选-rank与index

 

2、【方案1】如何根据需要修正官方的排序逻辑?——rank排序函数

既然官方的排序是是基于全局,基于单个字段的,而不是先省,再城市的逻辑,我们就要另外建立一套排序的字段,从视图的维度,而不是全局的维度建立排序规则。

  • 创建基于视图的计算字段,计算省内的城市销售,排除全局影响;
  • 基于上述字段或者使用rank排序函数降序排列。

在上面的案例的,我们创建了一个rank函数,RANK(SUM([销售额]),'desc') ,拖入到视图中,这个是受当前视图约束的,不是全局的,因此会按照各省份的城市销售给予rank排名,而desc代表降序。

rank(expression, asc/desc)
表示返回分区中当前行按照聚合表达式expression的竞争排名

计算字段的计算依据:城市。把index放在城市(维度)之前,建立index与维度字段的索引关联,必要时清除省/自治区、城市上的排序规则,然后在点击工具栏的降序。

 

【Tableau排序】排序与筛选-rank与index

 

3、如何显示TOP?

在Tableau的操作顺序中,条件和TOP顶部筛选的优先级高于维度筛选器,所以使用TOP建立集合,再拖入到二级分类中是不行的,TOP10只会引用全局的TOP10,而不是二级分类后的TOP10,所以出现下面的问题:我想要各省下的TOP10城市,结果系统给我的是全部省份的TOP10.

 

【Tableau排序】排序与筛选-rank与index

 

如何修正呢?

我想可以通过上下文筛选器+集合实现,因为上下文筛选器高于集合,但是没有实验成功,有兴趣的可以按照这个逻辑试一下。

最后,我继续使用了上面的rank函数返回值,拖入到筛选器,或者先新建字段再拖入筛选器,选择需要的TOP数量,比如5.不足之处是不能使用参数。

 

【Tableau排序】排序与筛选-rank与index

 

4、使用index实现排序——关于index的位置

index()表示返回分区中当前行的索引,不包含与值有关的任何排序。
  • index的索引,与放置的位置有关系,与数值没有关系。当放在城市(维度)最后面,index的索引是变动的,不与任何值有关;当放在城市(维度)前面时,index的索引与城市关联,并随着排序的变化而变化;(可以参考下面的动图)

 

【Tableau排序】排序与筛选-rank与index

 

  • 当index放在维度最后时,索引与数值无关;因此默认的排序还是基于全局的,不能实现我们想要的基于二级数值排序;因此要放在维度之前,这时的索引与维度关联,并随着维度字段而变化。(图)

 

【Tableau排序】排序与筛选-rank与index

 

5、几个注意事项:

  • index函数部分情况下和rank类似,建立排序可以使用,二者区别在于,index是建立维度的索引,与数值无关,而rank是基于expression聚合表达式建立排名;
  • 不管是rank还是index,建议放在你要排序的字段前面;如果不想显示,可以“隐藏标题”。

1 Sep 2018 rank
2 Sep 2018 增加 index

补充 3 Oct 2018

使用index做公共基准的变化趋势

在官方博客中,有一个查看三部电影自上线后每周的票房收入案例,需要先通过index()在日期的序列上建立索引,然后把这个索引加入到列字段,再通过颜色显示电影名称。视图是这样的。

 

【Tableau排序】排序与筛选-rank与index

 

我刚开始不明白它的逻辑,后来发现可以通过交叉表,更好的发现逻辑。邮件工作表,复制交叉表。你会发现,Tableau通过index创建了一个基于days的索引,然后把它作为连续数值生成轴。

 

【Tableau排序】排序与筛选-rank与index

 

用这个功能,我们可以对比多个新品上线后的表现。

上一篇:2021主流报表和BI软件对比


下一篇:python-用两组绘图熊猫数据框