Tableau中的换位思考 — 兼谈筛选器作用下维持百

Tableau是一个十分易学易上手的软件。看两三个小时的入门教程,就能做出一个看上去很不错的报表,非常有成就感。然而当你学到一定程度或者从事数据可视化工作一段时间,就会发现自己的Tableau水平遇到了瓶颈,很难突破。有时候工作中的一个小问题会让你犯愁一整天,茶饭不思。确实,Tableau软件充斥着各种各样的技巧,只有通过大量实际工作的磨练才能掌握,随着经验的日积月累和不断总结,才能发生Tableau水平从量变到质变的飞跃。这儿我想说的是,从事Tableau工作需要很强的换位思考能力。有时候常规方法无法达到目的,不妨换个思维,从另外一个角度出发,运用其他技巧、甚至“欺骗“的手段来实现同样的效果。


我们知道,在维度筛选器作用下一个通过表计算求出的度量百分比是无法维持原来值的。例如,任意选择几个Subcategory的值,它们的总和一定是百分之百,很显然它们各自的百分比与原先没有度量筛选器时的百分比完全不一样。

Tableau中的换位思考  --  兼谈筛选器作用下维持百

Tableau中的换位思考  --  兼谈筛选器作用下维持百

那么如何达到在维度筛选器的作用下,各百分比保持原来的值呢?这里介绍五种方法。

 

方法一:使用Index功能


创建一个计算字段 IndexIndex(),转换为离散,然后在control filter窗口中选择不同的数值就会显示对应Subcategory在筛选器作用以前的百分比值。此处Index()作为一个表计算筛选器,级别最低,它只能选出对应的维度呈现哪个值,却对表计算本身不起作用,所以,百分比值得以保持。


 

Tableau中的换位思考  --  兼谈筛选器作用下维持百

这儿用到的就是一种换位思考的方法。既然筛选器级别太高,影响表计算结果,得,我就用级别最低的筛选器(表计算筛选器)将字符串表示的维度值转换为可用Index表达的数字来实现相同的效果。当然,此方法有两大缺点。首先,Index选项中1-17分别对应哪个Subcategory不明确。其次,当Index不按Subcategory的字母顺序排列而按照别的标准来排,比如按照Sales的大小排列,则其对应的Subcategory 又会有变化,因此,虽然想法不错,但此法不是一个好的选择。

 

方法二:使用集值 (Set)

基于Subcategory,建一个 Sales大小排列的集(Set),设立参数Top N以实现动态选择,并将Set放到颜色标记中。

Tableau中的换位思考  --  兼谈筛选器作用下维持百

隐藏颜色图例中的Out,选择不同的参数,就能显示相应Subcategory原先的百分比。

Tableau中的换位思考  --  兼谈筛选器作用下维持百

此处没用任何筛选器,只是将Out类别的Subcategory及其百分比值隐藏起来,从视觉上就显示出所感兴趣的Subcategory及其原先的百分比值,这就是一种通过“欺骗“而达到同样效果的手段,很巧妙。此方法的缺点是,由于集 (Set) 的特性,仅适用于选择按照某种特性、尤其是度量值大小排列的维度及百分比,而无法自由随机地选择维度并呈现百分比值。

 

方法三:复制数据源


我们知道,Percent of Total  的计算方法是:SUM([Sales])/TOTAL(SUM([Sales]))

假如将数据源进行复制,维度筛选器和分子中的Sales采用同一数据源中的值,而分母中的Sales采用另一数据源中的值,只要脱离两个数据源之间的联系,维度筛选器就只能影响分子中的Sales,而对分母中的Sales却无能为力,如此就能保持筛选器作用之前的百分比,这就是此方法的作用原理。


% in Double Data Sources

SUM([Sales])/TOTAL(SUM([Orders (Sample – Superstore) (2)].[Sales]))

Tableau中的换位思考  --  兼谈筛选器作用下维持百

此方法的缺点是需要Blending两个数据源,增大了文件尺寸,并影响报表呈现的速度和性能。

 

方法四:使用lookup功能

表计算求出的百分比值之所以无法保持,是因为在筛选器和计算排列顺序表中维度筛选器排在表计算之上,所以表计算受维度筛选器的控制。如果我们将维度筛选器变成一个表计算筛选器, 原先的百分比值就可以保持了。在第一种方法中用了Index功能,此处我们可用lookup功能,它也是一种常用的表计算功能。建立以下计算字段:


Lookup:

LOOKUP(MIN([Sub-Category]),0)

此处MIN功能的目的是将Subcategory变成一个聚合计算,这是lookup所要求的,当然也可以用MAXATTR等。

Tableau中的换位思考  --  兼谈筛选器作用下维持百

此方法比第一种用Index的方法有进步,因为在筛选器选项中显示的是维度的具体值,与直接将Subcategory 用作筛选器并无二致。缺点也很明显,当换一种维度,比如RegionCategory等作为筛选器时,其lookup计算字段必须更改所选维度,十分麻烦。

 

方法五:用表范围LOD计算


杀器来了!此方法用表范围的详细级别计算来求出百分比。


% by LOD:

SUM([Sales])/SUM({SUM([Sales])})

此计算中,分母所包含的表范围LOD计算算出总体销售额,它属于Fixed详细级别计算,不受维度筛选器的影响,因此选中的所有维度都将保持原先的百分比值。


Tableau中的换位思考  --  兼谈筛选器作用下维持百


方法一和方法四采用的是通过降低筛选器的思路,而此处不改变维度筛选器,却用Fixed LOD 将计算提高级别、超越维度筛选器以达到目的。端的是条条大路通罗马!


为什么此法甚佳?请注意此计算用到的是度量,并未牵涉维度,所以无论选择何种维度作筛选器,都不需要修改计算式,总能完美地运作,这是比方法四更好之处。另外,其维度值选择可以是随机的,不用按照度量值或其它标准排列,这是与方法二相比的优势所在。它又无须象方法三那样需要双数据源。Overall,方法五无愧最佳选择,秒杀所有其他方法!

 

换位思考在Tableau中无处不在。基本上,Tableau中能让你拍案叫绝的技巧和手段都用了换位思考这种说的难听一点就是“欺骗“的手段。在以后的系列中,我还会继续教你用”欺骗“的手法,克服一个个难关,神鬼不知直达目的!

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/187249.html

(0)
上一篇 2021年11月5日
下一篇 2021年11月5日

相关推荐

发表回复

登录后才能评论