数据仓库数据的多粒度化为用户使用数据提供了一定的灵活性,例如家用电器销售数据可以同时满足市场、财务和销售等部门的需要,财务部若要了解某地区的销售收入,只需改变相关数据的粒度即可。
ETL
数据仓库并不只是数据的简单累积,而是经过一系列的抽取、转换和装载的过程,简称ETL。ETL是构建数据仓库的重要环节,对数据仓库的后续环节影响比较大。目前市场上主流的ETL工具有Informatica公司的PowerCenter、IBM公司的DataStage、Oracle公司的WarehouseBuilder以及Microsoft公司的SQLServerIS等。下面简要介绍ETL的主要功能。
1.数据抽取
数据仓库是面向主题的,并非源数据库的所有数据都是有用的,所以在把源数据库中的相关数据导入数据仓库之前,需要先确定该数据库中哪些数据是与决策相关的,数据抽取的过程大致如下。
(1)确认数据源的数据及其含义。
(2)抽取。确定访问源数据库中的哪些文件或表,需要提取其中哪些字段。
(3)抽取频率。需要定期更新数据仓库的数据,因此对于不同的数据源,需要确定数据抽取的频率,例如每天、每星期、每月或每季度等。
(4)输出。数据输出的目的地和输出的格式。
(5)异常处理。当需要的数据无法抽取时如何处理。
2.数据转换数据仓库的数据来自多种数据源。不同的数据源可能由不同的平台开发,使用不同的数据库管理系统,数据格式也可能不同。源数据在被装载到数据仓库之前,需要进行一定的数据转换。数据转换的主要任务是对数据粒度以及不一致的数据进行转换。
(1)不一致数据转换。数据不一致包括同一数据源内部的不一致和多个数据源之间的数据不一致等类别,例如在一个应用系统中,BJ表示北京,SH表示上海,GZ表示广州。而在另一个应用系统中,对应的代码分别为1、2和3。此外,不同业务系统的数量单位、编码或值域需要统一,例如某供应商在结算系统的编码是990001,而在CRM中编码是YY0001,这时就需要抽取后统一转换编码。
(2)数据粒度的转换。业务系统一般存储细粒度的事务型数据,而数据仓库中的数据是用于查询、分析的,因此需要多种不同粒度的数据。这些不同粒度的数据可以通过对细粒度的事务型数据聚集(合)(aggregation)产生。
3.数据清洗
数据源中数据的质量是非常重要的,低劣的“脏”数据容易导致低质量的决策甚至是错误的决策。此外,这些“脏”数据或不可用数据也可能造成报表的不一致等问题。因此有必要全面校验数据源的数据质量,尽量减少差错,此过程是数据清洗(DataCleaning),也叫数据的标准化。目前一些商务智能企业提供数据质量防火墙,例如BusinessObjects(SAP)的Firstlogic,它能够解决数据的噪声。清洗后的数据经过业务主管确认并修正后再进行抽取。数据清洗能处理数据源中的各种噪音数据,主要的数据质量问题有以下几种。
(1)缺失(Missing)数据。即数据值的缺失,这在顾客相关的数据中经常出现,例如顾客输入个人信息时遗漏了所在区域。
(2)错误数据。常见的错误数据包括字段的虚假值、异常取值等。例如在教学选课系统中,选修某门课程的人数不能够超过该课程所在教室的座位数。这些错误数据产生的主要原因是由于业务系统在数据输入后不能进行正确性判断而被录入数据库。错误数据需要被及时找出并限期修正。
(3)数据重复。数据重复是反复录入同样的数据记录导致的,这类数据会增加数据分析的开销。
(4)数据冲突。源数据中一些相关字段的值必须是兼容的,数据冲突包括同一数据源内部的数据冲突和多个数据源之间的数据冲突。例如一个顾客记录中省份字段使用SH(上海),而此顾客的邮政编码字段使用100000(北京地区的邮政编码)。冲突的数据也需要及时修正。
4.数据装载数据转换、清洗结束后需要把数据装载到数据仓库中,数据装载通常分为以下几种方式。
(1)初始装载。一次对整个数据仓库进行装载。
(2)增量装载。在数据仓库中,增量装载可以保证数据仓库与源数据变化的同期性。
(3)完全刷新。周期性地重写整个数据仓库,有时也可能只对一些特定的数据进行刷新。在初始装载后,为维护和保持数据的有效性,可以采用更新和刷新的方式:更新是对数据源的变化进行记录,而刷新则是指在特定周期数据完全重新装载。