表计算
1. 概述
1.1. 应用场景
在数据分析的过程中,有时仅凭原始数据生成的图表可能难以满足更深入、更复杂的分析需求。我们可以通过表计算对汇总数据进行进一步的处理和分析,以满足更多样化的分析诉求。例如,希望对汇总数据进行排名分析,或者分析各大区近7天的平均销售额等。
1.2. 功能介绍
表计算无需用户编写复杂公式或使用自定义计算字段,通过直观的可视化配置方式,快速实现多种常见的高级计算及各计算间的嵌套计算。
在数值栏中,点击需要添加表计算的字段,在下拉菜单栏中选择“高级计算-表计算”,即可弹出表计算设置框。
表计算主要分为两个步骤,确定计算类型 和 确定计算依据。
计算类型:选择适合当前分析需求的计算类型,提供7种方式,包括差异、差异百分比、百分比、占比、累计、移动计算及排名。
计算依据:明确是在整表内进行比较,还是在特定分组内进行分析,即确定想要在哪个数据范围内做计算。
2. 计算类型
表计算的计算类型有7种,分别为差异、差异百分比、百分比、占比、累计、移动计算、排名,详情如下:
2.1. 差异
用于计算表中当前值与另一个值之间的差异。公式 :差异值=当前值-对比值
支持以选定区域第一个/最后一个或计算单位前一个或后一个为基准作差值计算,支持横向或纵向对比计算。
第一个 | 计算分区中的当前值与第一个值之间的差值。 |
上一个 | 计算分区中的当前值与前一个值之间的差值。 |
下一个 | 计算分区中的当前值与下一个值之间的差值。 |
最后一个 | 计算分区中的当前值与最后一个值之间的差值。 |
例如计算2020年各月“销售数量”跟年初相比的差异值及每月销售数量的环比波动情况,详细步骤如下:
1)新建普通表格,将「日期-月」拖入维度栏中,「销售数量」拖入数值栏。
2)在数值栏中,对「销售数量」字段设置高级计算-表计算;计算类型选择差异,计算差异应该依据的值分别使用第一个和前一个;单位计算区域选择单列,寻址方向为向下。
销售数量”跟年初相比的差异值:由于原始表中数据范围为2020年数据,可以通过选择相对于「第一个」,对每月数据与1月数据做差异计算,实现与年初相比的差异值
计算跟上月销售数量的差异值:通过选择相对于「前一个」,对每月数据与上月数据做差异计算,实现每月销售数量的环比波动情况分析。
单位计算区域用于决定当前视图中的计算范围,由于该场景是单维度分析且不存在对比维度,单列和整表的计算结果是相同的,关于单位计算区域和计算方向,会在本文中第三部分详细介绍。
3)点击确定,差异表计算添加完成。
可以看到,在跟前一个月比较时,由于2020-01月已经为第一个值了,此时差异计算结果为空。
2.2. 差异百分比
用于计算表中当前值与另一个值之间的差异百分比。公式:差异百分比=(当前值-对比值)/对比值
支持以选定区域第一个/最后一个或计算单位前一个或后一个为基准作差值计算,支持横向或纵向对比计算。
第一个 | 计算分区中的当前值与第一个值之间的差值。 |
上一个 | 计算分区中的当前值与前一个值之间的差值。 |
下一个 | 计算分区中的当前值与下一个值之间的差值。 |
最后一个 | 计算分区中的当前值与最后一个值之间的差值。 |
例如计算2020年各大区下每月“销售数量”的环比波动情况,详细步骤如下:
1)新建普通表格,将「日期-月」拖入维度栏中,「大区」拖入对比栏,「销售数量」拖入数值栏。
2)在数值栏中,对「销售数量」字段设置高级计算-表计算;计算类型选择差异百分比,相对于「前一个」,单位计算区域选择单列,寻址方向为向下。
单位计算区域用于决定当前视图中的计算范围,寻址方向用于确定计算方向。该场景下维度字段为日期,对比字段为大区,需要计算各大区的差异百分比,此时就需要先以大区分区,再做单列的向下计算,关于单位计算区域和计算方向,会在本文中第三部分详细介绍。
3)点击确定,差异百分比表计算添加完成。
以华东区为例,即计算华东区域下,销售数量的环比增长率;
2.3. 百分比
用于计算表中当前值与另一个值之间的比值。公式:百分比=当前值/对比值
支持以选定区域第一个/最后一个或计算单位前一个或后一个为基准作差值计算,支持横向或纵向对比计算。
第一个 | 计算分区中的当前值与第一个值之间的差值。 |
上一个 | 计算分区中的当前值与前一个值之间的差值。 |
下一个 | 计算分区中的当前值与下一个值之间的差值。 |
最后一个 | 计算分区中的当前值与最后一个值之间的差值。 |
例如该表显示一家门店 2020年每月的总销售额,可以使用百分比计算当月销售额相对于上月销售额完成度
1)新建普通表格,将「日期-月」拖入维度栏中,「大区」拖入对比栏,「销售金额」拖入数值栏。
2)在数值栏中,对「销售金额」字段设置高级计算-表计算;计算类型选择百分比,相对于「前一个」,单位计算区域选择单列,寻址方向为向下。
该场景下维度字段为日期,对比字段为大区,当月销售额相对于上月销售额完成度,此时就需要先以大区分区,再做单列的向下计算,关于单位计算区域和计算方向,会在本文中第三部分详细介绍。
3)点击确定,百分比表计算添加完成。
以华东区为例,2020年 2 月完成了 2020 年 1 月所完成销售额的 49.5%;2020年 3 月完成了 2020 年 2 月所完成销售额的 206.05%。
2.4. 占比
用于计算表中当前值与选定区域内指标值的占比,公式:占比=当前值/选定区域内指标总值
可按单列、单行、整表、或按区域计算占比,该计算类型下,寻址方向无实际意义。
占比和百分比的区别
占比通常指的是一个部分与整体的比例关系。它可以用来描述某个类别在总体中所占的比重。
百分比是一个无单位的数学概念,用来表示某个数是另一个数的多少百分之一。
例如,该表显示一家门店 2020年每月的总销售额,可以计算各个大区当月销售额占当前大区总销售额的比例或所有大区总销售额的比例。
场景一:计算各个大区当月销售额占当前大区总销售额的比例:
1)新建普通表格,将「日期-月」拖入维度栏中,「大区」拖入对比栏,「销售金额」拖入数值栏。
2)在数值栏中,对「销售金额」字段设置高级计算-表计算;计算类型选择占比。
3)由于需要计算各个大区下销售额占该大区总销售额的比例,此时单位计算范围选择「区域」,行深度为0,列深度为1。这里含义为对大区做分区,在每个大区下对2020年所有月份做占比计算,各大区下占比总和为100%。
4)点击确定,占比表计算添加完成。以华东区为例,2020年 2 月销售额占 该大区总销售额的5.06%
场景二:计算各个大区当月销售额占所有大区总销售额的比例。
由于需要计算各个大区下销售额所有大区总销售额的比例,此时单位计算范围选择「整表」,这里含义为计算各个大区下每月的数据占所有大区销售总额数据的百分比。
点击确定,占比表计算添加完成。以华东区2020年 2 月销售额数据为例,占该大区总销售额的3.58%。
2.5. 累计
用于计算选定区域内按序指标累计值,支持求和、平均、最大值、最小值四种计算类型。
求和:每个值都会与上一个值相加。
平均值:当前值与所有前面的值的平均值。
最小值:所有值都替换为原始分区中的最低值。
最大值:所有值都替换为原始分区中的最高值。
例如,该表显示一家门店 2020年各个大区每月的销售额
场景一:计算各大区月累计销售额
1)新建普通表格,将「日期-月」拖入维度栏中,「大区」拖入对比栏,「销售金额」拖入数值栏。
2)在数值栏中,对「销售金额」字段设置高级计算-表计算;计算类型选择累计-求和
3)由于需要计算各大区月累计销售额,此时单位计算区域选择「单列」,寻址方向为向下。这里含义为以大区做分区,对各个大区下的每月销售额进行累计求和计算。如图所示,绿色为单位计算区域,纵向逐一相加。
场景二:计算每月的累计销售额
由于需要计算每月的累计销售额,此时单位计算区域选择「单行」,寻址方向为横穿。这里含义为以月份做分区,对每月各大区的销售额进行累计求和计算。如图所示,绿色为单位计算区域,横向逐一相加。
2.6. 移动计算
移动计算(滚动计算)常用来查看长期趋势。例如,对于证券数据,市场每天都在波动,很难通过每日的上升和下降把握全局,可以使用移动计算来定义一系列值通过所选聚合进行汇总。
用于计算分组中某一项与其前后几项的聚合计算的结果。支持求和、平均、最大值、最小值四种计算类型。
窗口:即指标移动计算的计算窗口,可以通过设置窗口大小来调整计算的范围(窗口计算时包含当前值)。
例如,下图是各大区2020年每月的销售额,可以使用移动计算得出各大区近三个月的平均销售额。
1)新建普通表格,将「日期-月」拖入维度栏中,「大区」拖入对比栏,「销售金额」拖入数值栏。
2)在数值栏中,对「销售金额」字段设置高级计算-表计算;计算类型选择移动计算-求和
3)由于需要计算各大区近三个月平均销售额
此时单位计算范围选择前2个后0个,代表窗口为当前月及前两个月;
单位计算区域选择「单列」,寻址方向为向下,含义为以大区做分区,计算各个大区下的近三月平均销售额。
4)如图所示,对于2020-01月,由于没有前两位数值,得到结果为1月的平均值;对于2020-02月,由于没有前一位数值,得到结果为1月和2月的平均值,以此类推;当某月销售额为null时,则跳过该值。如下图8月的数据,此时为6月和8月的平均值,跳过了7月进行计算。
2.7. 排名
用于在选定区域内对指标进行排名。
提供升序和降序两种,升序顺序按最低到最高对值进行排名,降序顺序按最高到最低对值进行排名。
排序方式:出现指标值相等的情况时,需要根据实际场景选择合适的排序方式
竞争排序-RANK (1, 2, 2, 4):为相同的值分配相同的排名。
密集-DENSE_RANK(1, 2, 2, 3):重复值的排名全部相同,也就是排名序列中的下一个数字。
唯一-ROW_NUMBER(1, 2, 3, 4):将根据计算排名的方向为重复值指定不同的排名。
注:排名不支持二次计算。
例如,下图是各大区2020年每月的销售额
场景一:计算各大区的月销售额排名
1)新建普通表格,将「日期-月」拖入维度栏中,「大区」拖入对比栏,「销售金额」拖入数值栏。
2)在数值栏中,对「销售金额」字段设置高级计算-表计算;计算类型选择排名-降序
3)由于需要计算各大区月销售额排名(从大到小),此时单位计算区域选择单列。
4)如图所示,以华东区为例,此时会按照华东区的月销售额从大到小进行排名,并展示每个月的具体名次。
场景二:计算各月的大区销售额排名
由于需要计算月下每个大区的销售额排名(从大到小),此时单位计算区域选择单行。
4)如图所示,以2020-01月为例,此时会按照月销售额从大到小,对各个大区进行排名,并展示每个区域的具体名次。
3. 单位计算区域及寻址方向
单位计算区域即分区,为表计算划定计算范围,每个分区就是一个单独的“表”,每个计算都是在独立的表中进行的。各个表在计算时没有关系,互不影响。单位计算区域包括 单行、单列、整表、区域四种。
寻址规定了每个分区中表计算的方向,包括向下、横穿、先向下后横穿、先横穿后向下四种。
单位计算区域和寻址这两个配置是有级联关系的,具体规则如下:
计算区域/寻址方向 | 向下 | 横穿 | 先向下后横穿 | 先横穿后向下 |
单列 | ✅ | ❎ | ❎ | ❎ |
单行 | ❎ | ✅ | ❎ | ❎ |
整表 | ❎ | ❎ | ✅ | ✅ |
区域 | ✅ 仅有维度 | ✅ 仅有对比 | ✅ 同时有维度和对比 | ✅ 同时有维度和对比 |
单列向下:沿着竖直方向进行计算,即每一列数据都是从上到下进行计算,不同列之间重新计算
单行横穿:沿着水平方向进行计算,即每一行数据都是从左到右进行计算,不同行之间重新计算
整表先向下后横穿:先按纵向从上往下,走到底跳转到下一列第一个位置,又开始从上往下走,直到走完最后一个数据,如下图。
整表先横穿后向下:走Z字形,先按横向从左往右走,走到尽头跳转到下一行第一个位置,又开始从左往右走,直到走完最后一个数据,如下图。
区域
基于“区域”计算是指,指视图中的子视图或子数据表,在计算时,“区”不像“表”那样贯穿到边(底),而是根据分组,在分组中进行独立计算,不同区域间重新计算。
分区和寻址:分四种情况,详情如下:
适用场景 | 寻址方向 | 具体表现 |
维度栏字段数≥1 and 对比栏字段数=0 | 向下 | 在每个区域中从上到下进行计算 |
对比栏字段数≥1 and 维度栏字段数=0 | 横穿 | 在每个区域中从左到右进行计算 |
维度栏字段数≥1 and 对比栏字段数≥1 | 先向下后横穿 | 在每个区域中进行计算,先按纵向从上往下,走到底跳转到下一列第一个位置,又开始从上往下走,直到走完该区域中最后一个数据。 |
先横穿后向下 | 在每个区中进行计算,走Z字形,先按横向从左往右走,走到尽头跳转到下一行第一个位置,又开始从左往右走,直到走完该区域中最后一个数据。 | |
维度栏字段数=0 and 对比栏字段数=0 | 表计算需要依赖维度或对比字段确定计算依据,因此该场景不支持表计算 |
深度:包括行深度和列深度,深度值N 为自然数,取值为0,1,2...N(N=维度或对比栏中的字段数),默认为0
列深度: 确定用于分区的对比维度。列深度为0,则不以列维度分组;列深度为1,则按照第1个列维度分组;列深度为2,则按照第2个列维度分组,以此类推。
行深度: 确定用于分区的行维度。行深度为0,则不以行维度分组;行深度为1,则按照第1个行维度分组;行深度为2,则按照第2个行维度分组,以此类推。
如下图所示,行深度=0即做整表按列从上到下计算;行深度=1,即按照第一个维度大区,各个大区间重新计算;行深度=2,即按照第二个维度日期-月,各月间重新计算,由于只有2个维度,因此计算结果为它本身(占比类的计算结果始终为1)
4. 二次计算
除排名计算外,其余所有计算都可以添加二次计算,即支持表计算相互间的嵌套。
例如,添加一个初始表计算来计算2020年内各月的累计销售额,然后添加二次计算来计算每月累计销售额排名。
1)新建普通表格,将「订单日期-月」拖入维度栏中,「销售金额」拖入数值栏。
2)在数值栏中,对「销售金额」字段设置高级计算-表计算;计算类型选择累计-求和,单位计算区域=单列,寻址方向=向下,如下图所示,此时计算出了2020年各月的累计销售额。
3)开启二次计算,添加排名-降序,选择排序方式为RANK,单位计算区域=单列,如下图所示;
4)此时就得到了每月累计销售额排名
5. 空值处理逻辑
null值目前在表计算中,处理逻辑如下
计算类型 | 处理逻辑及描述 | 举例说明 |
差异 | 当比较的值为null时,计算结果为null | 以相对于第一个为例,若在一个单位区域内,第一个值为null,则所有计算的结果都是null |
差异百分比 | ||
百分比 | ||
占比 | null/总计=null | 当前值为null时,占比=null/总计=null |
累计 | 当某值为null时,跳过该值向下继续累加 | 当原始值为10,null,20时,此时累计值分别为10,null,30 |
移动计算 | 当原始值为10,null,20,30且窗口为前两个值后0个值-求和时,此时结果值分别为:10,10,30,50 | |
排名 | null为最小值 | 如原始值为 【null,2,-1,3】 此时升序为【null,-1,2,3】;降序为【3,2,-1,null】 |
在对比场景中,可能存在空值,此时,空值在计算时被跳过,以下方场景为例;
原始数据为华北-2月,华南-1月,此时由于二维表,所以看起来华北-1月和华南-2月的表现可能是有值的,
在计算时,会跳过空值进行计算,以平均值计算为例,此时整表计算累计平均,实际为20/2;
1月 | 2月 | |
华北区 | 10 | |
华南区 | 10 |
注意:对于null值参与平均值计算,null值不算作分子的个数,跳过处理。
6. 使用限制
明细表不支持表计算
仅普通表格、分组表、轮播列表支持表计算;其他图表暂不支持。