第四章 如何增强数据?
4.1 什么是聚合?
聚合主要指聚合函数,其定义了值的表达方式,是SQL中的基本函数,聚合函数对一组值执行计算,并返回单个值,大多数聚合函数DataFocus都是支持的。 如果您熟悉SQL,则会发现DataFocus中的大多数函数都是SQL的扩展。 DataFocus默认使用Sum聚合。 如果默认聚合不是您想要的,您可以自由选择其它更合适的聚合。 DataFocus支持的聚合函数有以下几种,所有的聚合函数在DataFocus中都有提示用法及意义:
- average
- count
- cumulative_average
- cumulative_max
- cumulative_min
- cumulative_sum
- group_average
- group_count
- group_max
- group_min
- group_sum
- group_unique_count
- group_variance
- max
- min
- moving_average
- moving_sum
- stddev
- sum
- unique_count
- variance
- sum_if
- average_if
- variance_if
- stddev_if
- max_if
- min_if
- count_if
- unique_count_if
上述聚合函数在DataFocus的用户手册中都有明确定义。 如果您不熟悉每个聚合函数的意义,可以点击DataFocus页面的右上角“帮助——用户手册”按钮,如下图4-1-1所示,即可看到用户手册中对于各个聚合函数的解释说明。
![《玩转DataFocus数据分析》
图4-1-1](/images/0/0e/V2.13.4_2-4-19-3.png)
4.1.1 unique_count 和count
Count是计数函数,其以不同的方式对记录进行计数,可分为非重复计数和计数。例如现有一个包含17029条记录、598个不同产品的数据集。对产品码字段执行unique_count将返回值598,如下图4-1-2所示,unique_count的目的是对特定项的唯一实例进行计数。而如直接对产品码字段执行count,则系统会得到17029的聚合总数,如下图4-1-3所示,因为它计算的是所有记录,并不排除重复的值。
![《玩转DataFocus数据分析》图4-1-2](/images/b/bd/《玩转DataFocus数据分析》_图78.png)
![《玩转DataFocus数据分析》图4-1-3](/images/c/c7/《玩转DataFocus数据分析》_图79.png)
关系数据库源支持非重复计数,但Excel、Access或文本文件等都不支持。因此,我们可以通过DataFocus从数据库中提取数据,然后在DataFocus中直接进行非重复聚合的计算。
4.1.2不同的销售聚合
在DataFocus中,不仅可以显示重复计数与非重复计数,还支持同时显示数据集中总销售额字段使用不同聚合函数聚合后的值,我们只需要在DataFocus的搜索框内输入相关的聚合方式关键词,即可实时得到聚合后的结果,如下图4-1-4所示,其在同一个表中展现了各个产品的销售额总和、平均值、方差、标准差、最大值、最小值等等。
![《玩转DataFocus数据分析》图4-1-4](/images/d/df/《玩转DataFocus数据分析》_图80.png)
4.1.3 ATTRIBUTE与MEASURE
针对不同的列类型,可以使用的聚合方式不同,在DataFocus中,列类型总共有两类,一类为ATTRIBUTE列,另一类为MEASURE列。 MEASURE列,从字面意思理解,测量,计量,一般用来表示可以计算的数值列,例如常见的销售额、利润、数量、重量等可以计算的列。对于MEASURE列,DataFocus支持其使用多种聚合方式,如总和、均值、最大值、最小值等,可以直接在搜索框内输入聚合方式关键词,如下图4-1-5所示;
![《玩转DataFocus数据分析》图4-1-5](/images/0/00/《玩转DataFocus数据分析》_图81.png)
DataFocus中,MEASURE列默认显示的聚合方式是总和sum,如若不想要求数据的总和,在DataFocus中,可以自由的进行调整,如上图4-1-5所示,直接在搜索框内更改聚合方式是一种方法,另外也可以直接在图形或者表格中更改可以选择的聚合方式,如下图4-1-6所示,点击Y轴measure列名,选择:聚合方式,进而选择满足要求的聚合函数。
![《玩转DataFocus数据分析》图4-1-6](/images/4/41/《玩转DataFocus数据分析》_图82.png)
ATTRIBUTE列,一般我们认为是跟属性相关的列,可能包括有字符格式的属性数据,还有日期相关的数据,因为这类数据都是没法计算的,所以ATTRIBUTE列不支持总和、平均值、最大值、最小值等聚合方式,但是其支持count计数,以及unique_count非重复计数,如下图4-1-7所示。
![《玩转DataFocus数据分析》图4-1-7](/images/2/25/《玩转DataFocus数据分析》_图83.png)
ATTRIBUTE列,其聚合方式同样可以用上述所讲的两种方式更改,一是直接在搜索框内修改聚合方式为“去重后的计数”,二是直接在图表中更改聚合方式,如下图4-1-8所示,可见能选择的聚合方式仅支持数量,即计数,以及去重后的数量,即非重复计数。
![《玩转DataFocus数据分析》图4-1-8](/images/0/03/《玩转DataFocus数据分析》_图84.png)
4.2 如何创建公式? 在DataFocus中,支持大部分excel中的公式函数,例如上节内容提到的计数函数,也是一类公式,那么在接下来的章节中,我们主要为大家讲解如何在DataFocus中应用公式来生成新的列,以及支持哪些类型的公式。
4.2.1 公式应用
DataFocus中支持公式,且Excel中的大部分公式都支持,在日常业务中,很多时候我们需要的结果无法从原始数据中得到,而是需要通过层层计算所得,这时候,就需要运用到公式,DataFocus目前支持7大类公式,分别有:
- 聚合类公式:例如sum、average、min、max等,经常用在需要聚合的数值列之间,例如求销售金额的汇总,月平均薪资等,这类公式是业务中最常用的公式,在DataFocus中对每一个公式的用法以及示例都有说明;
- 转换公式:例如to_date、to_string、to_double等,这类公式主要用来转换原始数据类型,例如在原始数据中,其日期数据是以字符串形式保存的,但是为了使用DataFocus的日期关键词进行快速搜索分析,那么就需要将字符形式的日期转换成日期格式的,这时候就可以利用to_date公式进行转换;
- 日期公式:主要有year、time、diff_days等,这类公式主要对于日期时间格式的数据生效,例如可以从日期格式中得到具体的年份、月份,或者是两个日期之间差了几天等,非常有助于经常需要从时间维度来分析数据的业务;
- 混合函数:主要就是我们常见的大于、小于、大于等于、小于等于、不等于这类函数,主要用于判断数据;
- 数字函数:常见的数字函数有加减乘除、乘方、对数、三角函数等,这类就比较偏向于数学中的计算了;
- 逻辑操作符:主要是进行一些逻辑判断的函数,比如and、or、if...then...else、not等等,在日常业务中用到的概率也非常大;
- 文本操作函数:最后一类是与文本相关的函数,例如concat、strlen、substr等,分别代表着字符串链接、求字符串长度、以及获取子字符串,在日常工作中,也会经常用到文本类函数。
那么,在DataFocus中,如何来创建公式呢?其实非常简单,在搜索页面,可以看到左下方有一个添加公式,在添加公式中可以运用上述提到的7类函数公式,并且在右边,每个函数公式都有详细的说明以及示例,可以帮助使用者了解如何运用这些公式,如下图4-2-1所示;
![《玩转DataFocus数据分析》
图4-2-1](/images/8/8b/《玩转DataFocus数据分析》_图85.png)
例如现在我的原始数据有销售数量以及单价,想要求销售额,即可以利用我们的数学函数中最简单的乘法,计算出我们需要的销售金额,并且将公式名改成“销售金额”,双击“销售金额,即可将公式添加到搜索狂进行搜索分析,公式计算结果会形成一个新的列,如下图所示。
![《玩转DataFocus数据分析》
图4-2-2](/images/f/f0/《玩转DataFocus数据分析》_图86.png)
![《玩转DataFocus数据分析》
图4-2-3](/images/3/31/《玩转DataFocus数据分析》_图87.png)
4.2.2 公式嵌套
什么是公式嵌套?即在创建了一个公式之后,还可以直接利用该公式继续创建新的公式,这就是公式嵌套的用法。公式嵌套主要用在一些复杂的业务计算中,有时候单纯一个公式无法得到我们想要的结果,需要对原始数据进行“多层加工”才能得到最终我们要的那个值。 例如我们在对销售数据进行分析的时候,我们不仅需要知道其销售情况,还需要知道销售的利润情况,即企业的收益如何,这时候,我们就需要利用之前求出的销售总额,来减去各项成本总额,才能得到最终的利润。如下图所示,我们在创建第二个公式的时候,其中的一个公式字段采用了第一个公式的名称,这样就形成了一个公式的嵌套。
![《玩转DataFocus数据分析》
图4-2-4](/images/5/58/《玩转DataFocus数据分析》_图88.png)
![《玩转DataFocus数据分析》
图4-2-5](/images/d/d3/《玩转DataFocus数据分析》_图89.png)
如果想要了解各个公式的进一步用法,可以在DataFocus的产品手册中第十章找到各个公式的用法以及例子,以便更好地处理各类业务数据。
4.3 行列转换
何为行列转换?行列转换类似于Excel中转置的功能,即把行数据转换成各个列,把各列转换成行中不同的值。同样在DataFocus中也不需要太复杂的操作,只需要将原始数据进行搜索,待搜索出结果后,点击右上角“操作—行列转换”即可,在这里,即可以将行转换成列,也可以将列转换成行,系统会自动识别哪些列或者哪些行可以进行转置操作,如下图所示,转换之前是一个属性列一个数值列,转换后变成4个数值列。
![《玩转DataFocus数据分析》 图4-3-1
原始值](/images/2/2f/《玩转DataFocus数据分析》_图90.png)
![《玩转DataFocus数据分析》图4-3-2
行列转换](/images/9/9a/《玩转DataFocus数据分析》_图91.png)
![《玩转DataFocus数据分析》图4-3-3
行列转换之后](/images/9/91/《玩转DataFocus数据分析》_图92.png)
现实应用中统计报表,行列转换很常见的,就比如销售报表,把行中的年份和季度转换成列来显示数据、分析数据,这样做的很大一部分原因其实与我们的业务习惯有关,我们在分析报表或者查看报表的时候,习惯性的想要从多维度来分析数据,即显示成多列,这样更方便将数据进行左右对比,而不是上下浏览对比。
4.4 创建中间表
DataFocus中如何进行数据处理清洗?这就要利用我们独特的中间表功能了。中间表,即从原始数据到最终数据过程中对数据进行处理清洗而产生的表,即称之为“中间表”。我们可以对数据进行筛选过滤,或者新增公式列等,然后将处理后的数据保存为中间表,可以对中间表进行二次处理,如此循环,直到得到最终想要的结果。 如何创建中间表,其实有两种方式,一是创建关联中间表,二是创建问答中间表。顾名思义,问答中间表就是在搜索页面,将经过一系列操作的后的搜索结果,点击右上角“保存为中间表”,如下图4-4-1所示。
![《玩转DataFocus数据分析》图4-4-1](/images/9/99/《玩转DataFocus数据分析》_图93.png)
那关联中间表,就是在数据管理页面,直接点击右上角“操作—创建中间表”,即可进入创建中间表页面,此处也可以添加公式,选择需要的列,并且可以将多个表联立创建中间表,即可实现多表分析,如下图4-4-2所示。
![《玩转DataFocus数据分析》图4-4-2](/images/b/bf/《玩转DataFocus数据分析》_图94.png)
问答中间表可以添加有聚合方式的公式列,而关联中间表不能添加有聚合方式的公式列,所以关联中间表中的数据是没有经过聚合的,是原始数据的剪辑版,而问答中间表的数据肯定是经过聚合的,是汇总后的数据,这就是两者之间的主要区别。在实际业务中,我们可以按照不同的需求创建不同的中间表。
4.5 合并中间表
合并中间表,在DataFocus中,还可以将多个格式一样的中间表进行合并,例如有些企业会有从不同的子公司收集数据,其格式都是统一的,但是不同的子公司都有一份独立的数据,如何把这些数据汇总进行综合分析,那这个就是合并中间表的意义了。 例如现在我有不同年份的几个数据表,我想要综合起来进行分析,那首先要做的就是合并中间表,在数据管理页面,点击右上角“操作—合并中间表”,即可进入合并中间表页面,选择需要合并的中间表,若是合并的数据表的列名以及格式一样,系统就会自动重合,如若列名不一样,但实际是同一个字段,那也可以手动匹配,如下图4-5-1所示,最终将结果保存即可形成一个新的中间表,并可对该中间表进一步分析。
![《玩转DataFocus数据分析》图4-5-1](/images/d/d4/《玩转DataFocus数据分析》_图95.png)