文档介绍:经营分析系统的DW模型
 
一、写在前面
本文的目的是为了介绍联通经营分析系统的统一DW模型(UniDW),这份模型已经通过概念模型(CDM)的形式发布,为了深入理解设计的思路,这里做一个大致的说明。本文首先回答为什么会有统一DW模型,再简要述说经营分析关注的业务领域,最后再逐一介绍统一DW模型中的结构。希望能够和正在建设联通经营分析系统的同志们或是在其他领域建设数据仓库系统的同行们一起探讨一下数据仓库设计。
二、为什么有统一DW模型?
在联通经营分析系统中,第一阶段主要关注的分析主题是围绕用户而展开的,以前,对于用户、客户的概念模糊不清,经常混淆两者。甚至在总部统一经营分析系统业务规范中也是如此。客户相关的分析主题也有,诸如客户的年龄构成、职业构成等,但是由于数据源不干净,无法保证客户资料的准确性,所以这部分的分析不是目前阶段的重点。因此,我们现在提出的统一DW模型主要围绕用户的信息而设计的。关于用户和客户的区别在后面有详细介绍。
首先,我们要明确统一DW模型的目的。在经营分析数据仓库中,我们一般将它划分层ODS、DW和DM层, DW层指的是位于ODS之上,DM层数据之下的那一层数据结构,这一层的数据结构的主要任务是完成数据的预处理和沉淀。ODS的全称是Operational Datastore,它基本是按照数据源的模式存储数据,也就是偏向于事务型的数据存储,从这一层的数据结构,我们要进行OLAP分析很困难,因为它不是维度建模的,虽然我们在数据源到ODS这一过程的主要任务是进行代码转化(将代码转换为ID)和数据清洗。ODS层存在的目的在于降低数据仓库系统与OLTP系统的耦合程度,因为从OLTP数据源到ODS层表的规则一般都是非常简单,数据源抽取的规则复杂度很低。ODS层存在的另一个目的是提供即席查询,诸如离网客户名单,高价值客户名单等,涉及到详细信息时,必须从ODS层出数据。
DM层的目的很简单,它不是做数据沉淀之用,而是作为装载Cube所需的临时表,主要为性能考虑,便于流程处理,存储的数据也是最近一个时期的数据。因为多维分析的需求是经常变化的,所以这一层的结构也是频繁变化的,我们在设计时考虑将这一层数据结构放在逻辑设计之外(要让逻辑设计尽量保持稳定)。所幸的是这一层的结构非常简单,当一个分析主题确定时,也即维度、度量确定下来后,DM表的结构也随之确定,所以这一层表的创建和数据的装载工作目前都归于多维分析实施的工作。
正是由于用户需求的频繁变化,我们必须要有一个强大而稳定的DW层表,它包含绝大多数的分析维度和度量,并且具有足够时间跨度的数据沉淀。这种数据沉淀必须要是稳定的,在经营分析系统建设初期,数据沉淀的概念还是不清楚的,很多情况是将在若干维度汇总若干度量的数据当作沉淀,但是一旦从一个新的维度分析同样的度量,那么这个汇总数据一点用都没有。另外,这个DW层必须是和OLTP系统是绝对低耦合的,DW应该只和业务主题、分析逻辑相关,而不应该同OLTP系统的某个字段扯不清。只有这样,我们的DW层才能被复用。对于用户不断变化的需求,DW设计在一定范围内也要能够适应这种变更,这就要求对扩展性设计的要求。综上所述,设计DW层要达到以下目标:
           数据沉淀的稳定性。能够保证数据沉淀不是白费空间、时间;
           数据结构的重用性。能够保证数据结构的通用性,和数据源无关;
           数据结构的扩展性。能够适应需求的变更;
都说数据仓库是面向主题的、集成的、相对稳定的、反映历史变化的,可是究竟这些字里行间的意义是什么呢?我们认为在面向主题之前,首先要面向对象,这里的对象指的是电信业务中的实体,用户可以算是一个实体,其他的诸如客户、产品、渠道、竞争对手等都是实体。对每个实体,要将他们的基本信息、消费信息集成起来,形成稳定的数据结构,并在时间上进行沉淀。前面我们提到目前经营分析的重点实体是用户,按照不同的维度对用户进行分群,分析他们的数量、消费、业务使用量等。
 
三、经营分析系统关注的业务
经营分析关注的主要是结果,例如关注用户的信用度,而不是如何对用户进行信用控制;关注用户的开帐金额,而不是用户的开帐优惠规则;关注用户的二次批价详单,而不是如何进行二次批价等。
目前,经营分析所获取的数据源来自综合营帐系统、计费系统、客服系统和结算系统,主要也就是来自前两者。对于不同的厂商,它们的系统各自不同,通过分析看到,它们的结构自然都是类似的,因为毕竟有一个综合营帐系统的技术规范在那里,并且也经过一段时间的洗礼,厂商也不能走得太远。它们对于详细的处理细节可能不尽相同,但是对于最终我们关注的结果性的数据结构,还是可以统一的。目前,在ODS层,我们没有统一,因为历史原因,我们现在也