在Tableau中Sub Total 和Grand Total 默认的运算是Sum,如果需要可以改成ave,min或者max,但是如果有别的需求怎么处理呢?
如果我们做crosstab时如果rows上放了很多的表项,但是我们只想看某些维度的subtotal怎么办?因为Tableau默认会给所有的维度都加上subtotal。
我们可以通过创建一个calculated field,根据size来重写计算方式。
1. 显示某些维度的subtotal
如下图,每个维度都有sub totals,如果我们只想看Country维度的怎么办?
1.1 方法一,右击维度胶囊,选择是否要显示subtotals
1.2 方法二, 先拖入要显示subtotal的维度,然后增加subtotal,再拖入其他维度
2. 自定义Totals
这一步的关键是SIZE(),Grand Total的SIZE()总是1,所以可以写专门的判断语句来显示;
但是subtotal的SIZE()受当前window显示的数据影响,不是固定的,是介于1和最大SIZE()之间的一个数字,我们可以把SIZE()加入当前crosstab来看下。
如下所示,当前页面的subtotal SIZE分别是2和6,而最大SIZE()是33,所以可以基于此动态判断。
如果在上图中,我想在Country levle的Total中显示Copiers的的Profit,那怎么做呢?
Step1. 创建中间变量 CopiersProfit
Step2. 创建变量,新的Profit
Step3. 把这个变量拖到Measure Values
对比前两列,可以发现这个变量除Country 的subtotal外其余值和Profit一样,而Total行按照我们的预期,只显示Copiers的Profit。
到此,Subtotal改写完成。
如果要改写Grand Total,只要针对SIZE()=1的情况就可以了。
参考文献:
Customizing Totals in Tableau | USEReady
Custom Totals/Subtotals using Calculated Field (tableau.com)
Customizing Totals to Show Different Values Than Table | Tableau Software
Displaying Subtotals for Only Some Dimensions | Tableau Software