【Tableau】TC- 表计算(下)快速表计算

在上一篇中,我们通过对比sum、total、running_sum、window_sum介绍了主要的表计算函数,其中有一个非常重要的还没有说,那就是lookup()。我们结合应用,说一下lookup的强大用法,然后介绍一下默认的快速表计算。 一、LOOKUP(expression, [offset]) 这个函数的目的,是返回目标行(指定为与当前行的相对偏移)中表达式的值。 offset是查询时调整偏移的参数,如果偏移量为0,返回自身;直接使用数字,则相当于当前位置的偏移;也可以使用 FIRST() + n 和 LAST() – n ,以分区中第一行/最后一行为基础设定偏移量。如果省略了 offset,则可以在字段菜单上设置要比较的行。如果无法确定目标行,则此函数返回 NULL。 1)如果省略了offset,必须右键“编辑表计算”,指定比较行;这一点需要特别注意。 2)如果指定了offset,返回与目标行中expression的值。 「Nov 9, 2018补充」今天一个客户希望计算一个累计值和另一个累计值的和,第一个累计值就是K-in字段的running_sum,第二个累计值是K-out字段偏移一位的running_sum,因此结果就是: Runnning_sum(sum([k-in]))+lookup( Running_sum(sum([K-out]),-1)   二、快速表计算 在第一篇和本篇的基础上,我们下面说一下常见的快速表计算。Tableau内置了部分常用的表计算,称之为 “快速表计算”,这些快速表计算可以视为是预设好的表计算表达式,使用了上面我们介绍的lookup、first等快速表计算。我们也可以通过把视图的快速表计算拖入度量中查看具体的表计算公式。 比如说,我们在实例中添加了“总额百分比Percent of Total”,然后可以拖入度量生成字段,之后查看它的计算公式,如下图: A 常见快速表计算 第一类的快速表计算与日期无关,常见的七种快速表计算的基本对应关系如下: 汇总 Running Total=RUNNING_SUM(SUM([Sales])) 差异 Difference= ZN(SUM([Sales])) – LOOKUP(ZN(SUM([Sales])), -1) 差异百分比 Percent Difference = (ZN(SUM([Sales])) – LOOKUP(ZN(SUM([Sales])), -1)) / ABS(LOOKUP(ZN(SUM([Sales])), -1)) 总额百分比Percent of Total = SUM([Sales])Continue reading “【Tableau】TC- 表计算(下)快速表计算”

【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】表计算 (上)_聚合计算与表计算函数”