【演奏的船长】数据分析学习记录W19——数据表合并经验总结

禁止发文一个多月后,终于恢复了正常,下面继续记录数据分析工作的收获心得。
近期重点放在了数据库数据的抽取与整合上,按照之前在《先知夏洛克的数字餐馆》中对数据分析的步骤描述,这属于第二和第三步

【演奏的船长】数据分析学习记录W19——数据表合并经验总结_第1张图片

经过这段时间的实践,切实体验到了到数据分析工作的“二八定律”——20%的时间在分析数据,80%的时间在搜集和处理数据。也因此,更觉得应该将过程中经验、心得记录下来,以便今后的工作中提升该环节的工作效率。

遇到的问题

本次进行合并的是两张库存信息表格(简称QY和SH),全量数据都在千万以上,其中QY有107个字段,SH有68个字段。相较于之前遇到的情况,这两个表较特殊之处在于:

  • 首先,二者有相同意义的字段,却不能直接进行联接操作。
    之前碰到的情况都是可以进行联接操作的,通过对相同意义字段进行联接即可得到新的表格。这就好比可以通过【学号】字段将《学员信息》和《学员成绩》两个表进行整合。
    QY和SH则是有相同意义的字段,却没有可联结的字段值。这就仿佛是《1班的学员信息》和《2班学员成绩表》,固然两个表格里都有【学号】【姓名】字段,却无法直接进行联结。
  • 其次,数据都是以单车的颗粒度写入的,没有经过任何的聚合。
    在计算某日的库存时,实际上是先通过日期值筛选至当日,再进行核算。
    这就意味着两个问题:1.表中有大量的冗余数据,车辆的销售状态没有变化时,该车辆的信息就重复的写入;2.如果用抽取全量数据的方式进行分析,Tableau会卡到无法进行任何有效操作。
    第一个问题尚能容忍,第二个则难以接受。

由于以上两点原因,花费了大量的时间来识别和分析字段,也走了许多的弯路,现将总结后的步骤记录如下:

数据表整合方法

1. 澄清分析目的,倒推必须的字段信息

整合过程中犯得最大的一个错误是直接开始了字段筛选,没有提前明确需要的输出的表格,加上字段多且杂,于是陷入了各种细节中,花费了大量的时间。正确的方式是先澄清“必须要有的信息是哪些?”比如必须要有哪些维度?哪个时间区间内?哪些字段?
经过澄清,确定只取单日的库存数据进行整合,需处理的数据量由千万级缩减到十万级

2. 计算空值比例,筛选可用字段

如果某个字段的空值过多,那么无论这个字段是否有意义,都无法使用,可以提前排除,留下数据更完整的字段。

3. 按照维度分类,确定各维度要保留的字段

观察字段构成,按照《通用视角》中的八个维度对字段进行分类,以维度为单位对字段进行整理,删除重复冗余,保留各维度内的关键字段。

4. 确定核心关联字段及关联方式

各个表中找到核心的关联字段,并根据字段值的特性确定关联方式。
关联字段有两种,一种我称之为“胶水字段”,作用是将数据表整合成一个表。其字段的值一般具有唯一性。另一种我称之为“线索字段”,此类字段值未必有唯一性,但可通过该字段关联到主数据等其它数据源,以获得拓展信息。
关联方式也有两种,最容易想到是联接,联接的条件是共用字段的值具有唯一性。还有一种是并集的方式,除非两个表的字段完全相同,否则这种方式往往容易被忽略。二者的差别看通过下图进行理解

【演奏的船长】数据分析学习记录W19——数据表合并经验总结_第2张图片
两种关联方式直观差别

QY与SH适合的整合方式为:对VIN字段进行并集操作

5. 混合整合,将两个表格按照维度进行整合

确定哪些字段是专有的,哪些是共有的,哪些字段可直接进行关联,哪些调整后可进行并集。这里特别要注意很多字段是可以通过主数据获得的,对于此类字段,可考虑在Prep或Tableau中再进行联接获(这也是上一步中线索字段的作用),以减轻ETL抽数量和复杂度。

6. 生成参照表,为数据抽取和清洗提供参照

在参照表中罗列出最终要保留的字段,及字段的来源表,原名、别名等关联信息,为ETL和清洗提供支撑,使我们可以通过参照表确定要保留原始数据表的哪些字段,进行哪些操作。
【演奏的船长】数据分析学习记录W19——数据表合并经验总结_第3张图片
7. 执行ETL和清洗,获得可以用于分析的数据
【演奏的船长】数据分析学习记录W19——数据表合并经验总结_第4张图片
清洗过程示例

心得经验:

  • 少即是多
    不要被源表的各种信息迷惑,觉得这个字段可能有用,那也可能有用。关注分析目标,提炼出尽可能简洁的数据,并留下线索字段,这样抽数效率高,分析速度快,屏蔽冗余信息干扰,需要其它信息也很容易添加。
  • 主数据很重要,三范式很科学
    一个规范科学的主数据库,可以节省海量的时间空间,规避无数错漏。

你可能感兴趣的