Tableau有三种计算:① 基本计算、② LOD表达式、③ 表计算
本文章详细讲解【基本计算】:基本计算包括两大类,分别是行级别计算和聚合计算
一、行级别计算(数据源详细级别)
行级别计算是非聚合的,它就像excel中的公式,是基于每一行的数据计算的,是可视化之前就计算完成的。
>举个栗子<
利润计算公式:
利润/成本*100%=成本利润率
利润/销售收入*100%=销售利润率
1. 生成一个字段——行级别表达式
通过“计算字段”增加的新字段,会作为数据源的一部分。
2. 查看源数据集
3. 将其放入视图中
一般而言,有关比率的行级别表达式只有在行级别才有意义;超过行级别就会执行默认聚合,是没有意义的。 当然,我们可以修改这个字段的默认聚合为平均值,意义是各类别中子类别的利润率的平均值。
二、聚合计算(视图详细级别)
聚合计算,依赖于视图,是基于可视化图形界面各个维度的计算。通过默认执行该聚合计算(本身就是聚合),可以让tableau自动判断在何时对哪个详细级别执行聚合运算。在视图中,聚合表达式有个明显的标记,“聚合”AGG、“属性”ATTR。
>举个栗子<
1. 生成一个字段——视图级别表达式
2. 查看源数据集
视图级别表达式是基于可视化图形界面的计算,不体现在原数据集,因此没有新字段产生。
3. 将其放入视图中
意义是各类别的利润率,即总利润/总销售额。(区别于行级别利润率的平均值,下面做详细分析)
三、行级别计算VS聚合计算
1. 发现问题
“行级别利润率的平均值”与“各类别的利润率”的结果为何不同?
2. 分析问题
====化简来看(利润率)====
行级别表达式:(a1/b1)+(a2/b2)+(a3/b3)
视图级别表达式:(a1+a2+a3)/(b1+b2+b3)
(a1/b1)+(a2/b2)+(a3/b3) != (a1+a2+a3)/(b1+b2+b3)
从上面的表达式可以看出:行级别表达式 != 视图级别表达式
当然,有些时候行级别表达式与视图级别表达式具有相似的结果,但仍需要注意的是其表达的意义是截然不同的,不能因为结果意义,而选择错误的表达方式。
====化简来看(成本)====
行级别表达式:(a1-b1)+(a2-b2)+(a3-b3)
视图级别表达式:(a1+a2+a3)-(b1+b2+b3)
(a1-b1)+(a2-b2)+(a3-b3) = (a1+a2+a3)-(b1+b2+b3)
>举个栗子<
成本计算公式:销售额-利润
3. 总结
行级别表达式不是聚合运算,是针对个体的计算。
视图级别表达式是超越个体的聚合计算,不考虑个体,只计算总体。