【Tableau】表计算 (上)_聚合计算与表计算函数

更新序言:此文介绍了表计算的关键函数和相互关系。如果要理解表计算的独特性和逻辑,敬请阅读最新文章如下,视频介绍稍后推出: Tableau理解表计算的独特性和逻辑方法  2019/10 update Tableau的表计算分为几类,重点是前面三类。 索引排序函数:index()、size()、first()、last() ——这四个不需要参数; rank()及延伸函数,如rank_dense(),rank_modified()等; 移动计算函数:running_x ,比如 running_sum, running_avg, running_max等; 范围计算函数:window_x,比如window_sum,window_avg,window_max,等 R语言相关计算函数:script_bool()等(我没用过)。 在Tableau中,有多个求和的计算,典型的有 sum() 、total()  、 window_sum () 、 running_sum()四种,今天我们对比一下它们的区别,在何时他们相互等价;并结合起来介绍第一类索引函数。   1、聚合计算与表计算 sum() 是聚合计算,是基于数据源的计算,它的参数就是数据源的字段,比如 sum([sales]),它代表把数据源的每一行的数据都对[sales]字段执行累加计算; 而widown_sum(), running_sum(), total() 都是表计算函数,表计算的特征之一是基于视图中聚合数据的二次聚合计算,因此括号中的参数必须是聚合,比如说 total( sum([sales]) )。 聚合计算:对数据源行级别数据的聚合 表计算:对视图中数据聚合结果的二次聚合 更多聚合函数和表计算函数的不同,可以参考【tableau】如何选择Tableau计算类型? 2、total(expression) total(expression) 、 running_sum(expression)这两个表计算的参数都只有一个,就是要执行视图中数据数据的二次聚合。比如 TOTAL(SUM([数量])) RUNNING_SUM(SUM([数量])) 区别在于,total()是为每个分区返回同一个结果。我们知道,表计算的逻辑是 分区+寻址,total为各个分区求和,每个分区返回同一个数值。而running_sum()则可以为每个分区的每一行返回一个数值。前者是对聚合的聚合,后者这是对聚合的移动聚合。 为了更好的理解total,可以参考一下“总计百分比”这个表计算,它的公式就是sum/total,也就是聚合除以聚合的聚合,从而计算每一行在分区中的占比;因此对于多个行数据而言,一个分区的total结果是一样的。 合计百分比 表计算 : SUM([数量]) / TOTAL(SUM([数量]))    3、Continue reading “【Tableau】表计算 (上)_聚合计算与表计算函数”