3.1.2 聚合是问题分析的本质
问题分析的本质过程应该适用于Excel、SQL和Tableau等所有工具,这里先以熟悉的Excel为例介绍,帮助读者理解问题分析的本质关系。
1.基于Excel透视表理解聚合
以Excel为例,在“示例—超市”明细数据中创建两个透视表,生成“各类别的数量总和”“各细分的数量总和、利润总和”交叉表,数据如表3-2所示。
表3-2 两个问题的交叉表
Excel透视表(Pivot Table)实现了从成千上万的数据明细,到少量的交叉表的分组计算。还可以灵活调整交叉表的行列字段位置,比如“各细分、各订单年度的数量”,如表3-3所示。
表3-3 问题对象分别在行和列的结果交叉表
可见,Excel透视表的“透视”(Pivot)包含了双重含义:从明细表到结果表由多变少的计算过程、变换行列字段位置的结构调整。其中,前者称为“聚合”(Aggregation),后者称为“转置”(Pivot)。
在透视过程中,聚合是绝对的、客观的、不可或缺的,转置是相对的、主观的、非必然的。因此,分析的本质过程是聚合,聚合是分析中最基本的数据抽象方法。
笔者推荐读者以“可视化”的方式理解聚合,如图3-4所示,本书约定使用带箭头的线条表示逻辑上的聚合过程,箭头不同的起点和终点代表不同的聚合方式。基于这样的可视化层次框架理解问题背后的聚合过程,是笔者跨工具学习高级聚合的法宝之一。
图3-4 聚合是问题分析的本质
正因为“聚合是问题分析的本质”,所以分析结果对应的交叉表(Cross Table)又常被称为“聚合表”(Aggregate Table),与聚合表相对应的明细表(Detail Table)也被称为“底表”(Base Table)。企业分析过程中经常会出现成千上万的聚合表,它们催生和推动了数据仓库的发展;数据仓库不仅是数据明细的备份仓库,而且是各种聚合表、表关系等延伸内容的仓库。本书会在第11章结合Data Management简要介绍。
2.基于SQL理解聚合过程
“分析的本质是聚合”,这适用于所有分析工具,只是表达方式略有差异。
在SQL中,典型的聚合查询(Query)如下所示。
从结构上看,WHERE和HAVING语法实现筛选(其中WHERE在聚合之前,HAVING在聚合之后),GROUP BY语法限定聚合的分组依据(即分析对象),问题答案则必然对应聚合函数(比如SUM、AVG、MIN等)。可见,筛选、分组、聚合构成了SQL的基本结构。
从过程上看,SQL查询也是从数据明细表(即FROM之后的部分)到问题交叉表(对应SELECT之后的部分)的聚合过程。
本书中,不包含聚合的问题不能称为分析,姑且称为“查找”(Find),比如“每个员工的身份证号”(身份证号是唯一属性,因此不存在聚合过程)。“查找”是基于明细、不加抽象过程的;“分析”是建立在聚合和抽象基础上的,在SQL中可以统称为“查询”(Query)。比如:
· 查找明细行(如SLECT * FROM TABLE)
· 分组聚合查询(如SELECT[region],SUM([sale]) FROM table GROUP BY[region])
作为可视化分析的典型代表,Tableau Desktop也有类似的问题结构和聚合过程。更重要的是,Tableau把分析对象和问题答案归纳为更抽象的字段角色——维度和度量,相比Excel和SQL,这在逻辑上迈出了一大步。