表计算是 Tableau 进行灵活可视化分析的重要技巧之一,本文将介绍表计算类型及如何使用表计算,并使用简单的示例来演示表计算是如何转换数据的。
2020 Happy New Year
Key Points
表计算依赖两种类型的字段:寻址字段和分区字段。了解表计算的关键是弄清楚这些字段的工作方式。
1. 分区字段执行将数据分成多个单独的存储桶,并对每个存储桶执行计算的操作
2. 寻址字段则用于定义执行计算的“方向”
表计算类型
- 差异(差异、百分比差异、百分比):计算界面中当前值与另一值之间的差异,此应用应始终要关注两个值:当前值以及计算差异应依据的值
- 总额百分比:会将值计算为当前分区中所有值的百分比
- 排名/排序:表计算将计算分区中每个值的排名
- 百分位:将在分区中计算每个值的百分位排名
- 汇总:将在分区中以合并方式聚合值,不仅指求和,还包括:平均值等
- 移动/滚动计算:对当前值之前和/或之后指定数目的值执行聚合(总计值、平均值、最小值或最大值)来确定视图中的标记值
上述功能标注很好地告诉了我们 Tableau 表计算能实现什么样的功能。Tableau 是个‘拖拉拽’式的可视化工具,在当中实现可视化自然可以通过界面操作来完成(如下图),但更灵活的实现方式还是使用它的表计算公式。
其实,点击视图界面中的字段进行编辑也是学习 Tableau 公式使用的一个好方法。
关键公式列表
1. 移动累计
- Running_:这是一个系列的计算公式,它返回的是:给定表达式从分区中第一行到当前行的计算值
- Running_Avg:给定表达式从分区中第一行到当前行的平均值
- Running_Count:给定表达式从分区中第一行到当前行的计数值
- Running_Max:给定表达式从分区中第一行到当前行的最大值
- Running_Min:给定表达式从分区中第一行到当前行的最小值
- Running_Sum:给定表达式从分区中第一行到当前行的总和
下述视图表计算公式为:RUNNING_SUM(SUM([Sales]))
2. 窗口移动计算
Window_:这是一个系列的计算公式,它返回的是:窗口界面中指定前后偏移的计算值。包括:Window_Avg、Window_Corr、Window_stdev等。
下述视图表计算公式分别为:
WINDOW_AVG(sum([Sales]))
WINDOW_AVG(sum([Sales]),-1,1)
3. 排序/排名
- Index:返回分区中当前行的索引,对于分区中的第一行 index=1
- Rank_:为分区中的当前行返回标准竞争排名。使用可选的 asc |desc 参数指定升序或降序,默认为降序
- Rank_:指的是一组函数不同函数在处理相同值的排名时处理方式有所不同
- Rank:为相同值分配相同的排序,且数字中间插入间隔,如(6,9,9,14)将升序排列为(1,2,2,4);
- Rank_Dense:为相同值分配相同排序且数字中间不插入间隔,如(6,9,9,14)将升序排列为(1,2,2,3);
- Rank_Modified:为相同值分配相同排序,但为后置序号,如(6,9,9,14)将升序排列为(1,3,3,4);
- Rank_Percentitle:为分区中的当前行返回百分等级,如(6,9,9,14)将升序排列为(25,75,75,100);
- Rank_Unique:为分区中的当前行返回唯一值,如(6,9,9,14)将升序排列为(1,2,3,4)
4. 位置偏移
- First:返回当前行到分区中第一行的行数
- Last:返回当前行到分区中最后一行的行数
- Lookup:返回目标行(指定为当前行的相对偏移)中给定表达式的值。使用 First+n 和 Last+n 表示相对于分区中第一行或最后一行的目标。如果省了偏移,则可以在字段菜单上设置“比较目标”行。如果无法确认目标行,则返回。
LOOKUP(SUM([Profit]), First+ 2) 返回分区中第三行的SUM([Profit])。
5. 分区/全表统计
- Size:返回分区中的行数,若分区有5行,则Size=5。
- Total:返回给定表达式的总计。Total(Avg([Profit]))=组成分区的所有数据行的Avg([Profit])。
6. 其它函数
- Scrip- t_:包括Script_Bool、Script_Int、Script_Real、Script_Str等,主要实现功能为从外部服务器脚本返回指定类型的结果。
- Previous_Value:返回此计算在上一行中的值。如果当前行式分区中的第一行,则返回给定表达式。
从属表计算
可轻松实现2层表计算,实现数据中的复合计算。
End.
作者:九道门聊数据
来源:商业新知
戴口罩,勤洗手,多通风,少聚集。
携手共克时艰的我们,一定能取得最后的胜利!