【只要有手就能学的Tableau教程】前方有恶龙,打败丫!计算(

2020-04-28  本文已影响0人  Charles_DT

今天这条恶龙有点儿硬,但是你一定可以战胜它!
还是先来看一个Viz。

冠状病毒股票市场的赢家和输家
原文链接:https://public.tableau.com/zh-cn/gallery/winners-and-losers-coronavirus-stock-market?tab=viz-of-the-day&type=viz-of-the-day

行级别与聚合

打开Tableau,选择示例-超市数据源。
我们想看一下2019年各产品子类别的利润率情况(利润率=利润/销售额)
很明显我们要写个计算字段啦。


更改一下利润率的默认属性为百分比,你会看到如下结果。

这个数据是不是高的离谱了?我们来看一下数据源

如果你不确定这个利润率的计算结果,可以自行用计算器检验。
检验完之后,你会发现确实是这样算的,每一行的利润/销售额得到了我们的利润率,然后呢?因为我们视图中要看到的数据是各子类别的利润率情况,Tableau会把每一行的利润率做SUM,得到各子类别的利润率。这里就有问题了。

我们有点常识的人都知道,比率相加是没有意义的,如果要算某一个类别的利润率,应该用这个类别总的利润/总的销售额,是这样吧?

也就是说,当我们要计算利润率的时候,不能使用行级别数据来做运算然后再相加,这样会得到错误的结果,所以我们要修改利润率计算:


然后我们把v1、v2放在一起做一个对比。



很明显,v2版本是我们按对应子类别先累加利润和销售额,然后再相除的结果。

在多数情况下,我们的计算字段会使用聚合字段来做分析运算,因为从业务视角通常都会有一个维度对度量做聚合,而行级别的数据更多情况会聚焦在开发视角。

我已经尽力讲的很通俗易懂了,当你的计算字段复杂的时候,理解什么时候用聚合运算什么时候用行级别运算就更重要了。

IF ELSE

如果你懂编程的基本内容,这部分对你应该没什么难度~
开始,现在我们想看一下各产品子类别的盈亏情况,利润大于0时,盈利,利润小于0是亏损,利润等于0时,保本,我需要在图表中用三种不同的颜色标识出来。


根据需求,我们需要对利润来做一个条件判断:

今天我们讲最简单的一种,IF ELSE。
按照上面的思路,把它按Tableau能认识语言描述一下:


IF SUM([利润]) > 0 then "盈利"
ELSEIF SUM([利润]) = 0 then "保本"
ELSE "亏损"
END

固定语法结构你可以查看示例:


做好字段后把它拖动到颜色标记卡上,修改一下颜色

结束

今天讲了两个很常用的计算功能,多多实践才能完全掌握~
Practice makes perfect!


下期预告:计算(三)
上一篇下一篇

猜你喜欢

热点阅读