构建数据仓库五步法

折月煮酒 提交于 2020-01-10 13:10:55

一、确定主题

即确定数据分析或前端展现的主题。(以汽车行业的KPI管理分析系统为例)

例如:我们希望分析某年某月某区域某门店销售情况,这就是一个主题。

主题要体现出某一方面的各分析角度(维度)和统计数值型数据(量度)之间的关系,确定主题时要综合考虑。统计数值型数据(量度)存在于中间的事实表;分析角度是各个维度;我们将通过维度的组合,来考察量度。

那么,“某年某月某某一地区某一门店的销售情况”这样一个主题,就要求我们通过时间、地区和门店三个维度组合,来考察销售情况这个量度。

从而,不同的主题来源于数据仓库中的不同子集,我们可以称之为数据集市。数据集市体现了数据仓库某一方面的信息,多个数据集市构成了数据仓库。

 

二、确定量度

在确定了主题以后,我们将考虑要分析的技术指标,诸如:年销售额之类。它们一般为数值型数据。

我们或者将该数据汇总,或者将该数据取次数、独立次数或取最大值最小值等,这样的数据称为量度。量度是要统计的指标,必须事先选择恰当,基于不同的量度可以进行复杂关键性能指标(KPI)等的设计和计算。

 

三、确定事实数据粒度

在确定了量度之后,我们要考虑到该量度的汇总和不同维度下量度的聚合情况。考虑到量度的聚合程度不同,我们将采用“最小粒度原则”,即将量度的粒度设置到最小。

例如:假设目前的数据最小记录到月,即数据库中记录了每月的交易额。

那么,如果我们可以确认,在将来的分析需求中,交易额只需要精确到月就可以的话,我们就可以在ETL处理过程中,按月为单位来汇总销售数据,此时,数据仓库中量度的粒度就是“月”;反过来如果我们不能确认将来的分析需求在销售额上是否需要精确到月,那么,我们就需要遵循“最小粒度原则”,在数据仓库的事实表中保留每日的销售数据,以便日后对“天”进行分析。

举例:汽车行业KPI分析系统中,需求变更要求以天为单位分析门店的销售情况。

 

四、确定维度

1、如何理解维度?及维度的层次(Hierarchy)和级别(Level)

a、维度是指分析的各个角度。例如我们希望按照时间,或者按照地区,或者按照门店名称进行分析,那么这里的时间、地区、门店就是相应的维度。基于不同的维度,我们可以看到各量度的汇总情况,也可以基于所有的维度进行交叉分析。

b、维度的层次(Hierarchy)和级别(Level)

层次:时间维表结构为例,年-半年-季度-月-半月-旬-周-日

级别:门店维表结构为例,门店集团分类、门店类型分类等等

 

2、什么是缓慢变化维度?

维度表随时间变化的问题,我们称其为缓慢变化维度。

以客户维度表结构为例,每月所属有限公司发生变化,客户代码、客户标识、源客户标识、客户全称、分公司编号、分公司名称、历史标识(T/F)等变化。

 

五、创建事实表

a、了解

在确定好事实数据和维度后,我们将考虑加载事实表。

事实表装有企业的度量数据,度量以及事实表才是最终用户真正想要看的内容,维表是事实表数据的入口,事实只有通过维度解释才会变得有意义

 

b、如何创建?

做法:将原始表(OLTP)与维度表进行关联,生成事实表

 

注意点:在关联时有为空的数据时(数据源脏),需要使用外连接,连接后我们将各维度的代理键取出放于事实表中,事实表除了各维度代理键外,还有各量度数据,这将来自原始表,事实表中将存在维度代理键和各量度,而不应用存在描述性信息,即符合“瘦高原则”,即要求事实表数据条数尽量多(粒度最小),而描述性信息尽量少。

 

事实数据表是数据仓库的核心,需要精心维护,在JOIN后将得到事实数据表,一般记录条数都比较大,我们需要为其设置复合主键和索引,以实现数据的完整性和基于数据仓库的查询性能优化。事实数据表与维度表一起放于数据仓库中,如果前端需要连接数据仓库进行查询,我们还需要建立一些相关的中间汇总表或物化视图,以方便查询。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!