background image
数据探索  |  如何理清数据结构和含义? 
一位同事正在做数据探索,我问他“数据探索有什么开发方法?”他回答道,
“没有固
定的开发方法  ,就是看看数据,做做简单的统计。” 
至此,先解释一下,什么是数据探索,数据探索是对数据进行初步研究处理,目的是为
了更好的理解其特殊性质,以便后来选择合适的数据预处理和数据分析技术。包括汇总统计、
可视化、OLAP 和多维数据分析等等。 
有过数据分析基础的同学可能会笑话我这位同事菜鸟。其实并不是没有开发方法,只是
没有形成模式。如果一位即将进行此项工作的人,面对一堆数据,他该怎么办?我想第一个
需要弄清楚的是“这样做的目的是什么”
。如果他对数据不熟悉,答案可能是"搞清楚这些数
据结构和关系"。如果他要做的是数据挖掘工作中的一部分工作,这个答案可能是,"哪些客
户群是需要关注的?考虑哪些因素?"而对于后者,如果他对于数据还不是非常熟悉的话,
恐怕还是得像前者一样,搞清楚数据结构。   
曾经做过一些数据源分析的工作,是为了定义生产系统开发和经营分析系统开发之间的
接口,工作的目的就是搞清楚数据结构。这种目的不算非常强,所以采取的方式是首先确定
大范围,再逐个表分析,给出表的定义,约束关系以及和其他表的关系。例如需要分析客户、
帐务、业务使用的数据,而资源、数据业务的先不管,缩小范围。一般来说,这个范围可以
缩到很小,数量级在 20 以内是个不错的选择。如果太多数据只会让人产生恐惧,难以入手。
但其实最终需要分析的表肯定超出 20 个,因为沿着表之间的关系,能够引出一些新的需要
分析的表。   
虽然一般都会有数据字典帮助你理解数据,可几乎这些文档都只是记录了表结构,表名、
主键、外键参照等,而字段之间的逻辑关系,表的概念定义很少见到。例如对于一个用户表,
到底这个表里面存放的数据表示什么业务含义呢?找不到这样的信息,如果说这张表中存放
了所有的用户(假设我们已经给用户一个定义,客户定购某种产品的契约关系),那么这个
“所有”是指历史上所有出现过的用户?或是当前活动的用户?   
要是对业务熟悉,脑中已经有个概念模型,很快就可以切入重点,三户关系如何设计的?
销帐流程是怎样在数据中体现的?预存、托收、赠送费用都如何体现的?带着这些问题去探
索数据,当然是事半功倍,可以将这些问题看作为更进一步的探索目的。   
弄清数据源的结构和表间关系,这样的好处贯穿数据分析的全过程。比如此前用 BI 工
具 FineBI 做可视化分析时,数据量很大,但我只要弄清楚“销售”这一个主题,主题下有合