浅谈数仓一致性维度
1、一致性维度的概念
维度建模的数据仓库中,有一个概念叫Conformed Dimension,中文一般翻译为“一致性维度”。一致性维度是Kimball的多维体系结构中的三个关键性概念之一,另两个是总线架构(Bus Architecture)和一致性事实(Conformed Fact)。
在多维体系结构中,没有物理上的数据仓库,数据仓库是由物理上的数据集市组合成,是一个逻辑概念。数据集市的建立是可以逐步完成的,多个数据集市组合在一起,成为一个数据仓库。那么如果分步建立数据集市的过程出现了问题,数据集市就会变成孤立的集市,不能组合到整个数据仓库中,而一致性维度的提出正式为了解决这个问题。
一致性维度的范围是总线架构中的维度,即可能会在多个数据集市中都存在的维度,这个范围的选取需要数据架构师来决定。一致性维度的内容和普通维度并没有本质上区别,都是经过数据清洗和整合后的结果。
一致性维度建立是在多维体系结构的后台,即数据准备区。在多维体系结构的数据仓库项目组内需要有专门的维度设计师,他的职责就是建立维度和维护维度的一致性。在后台建立好的维度同步复制到各个数据集市。这样所有数据集市的这部分维度都是完全相同的。建立新的数据集市时,需要在后台进行一致性维度处理,根据情况来决定是否新增和修改一致性维度,然后同步复制到各个数据集市。这样不同数据集市的维度就可以保持一致。
在同一个集市内,一致性维度的意思是两个维度是有关系的,要么就是完全一样的,要么就是一个维度在数学意义上是另一个维度的子集。例如,如果建立月维度,月维度的各种描述必须与日期维度中的完全一致,最常用的做法就是在日期维度上建立视图生成月维度。这样月维度就可以是日期维度的子集,在后续钻取等操作时可以保持一致。如果维度表中的数据量较大,出于效率的考虑,应该建立物化视图或者实际的物理表。
这样,维度保持一致后,事实表就可以保存在各个数据集市中。虽然在物理上是独立的,但在逻辑上由一致性维度使所有的数据集市是联系在一起,随时可以进行交叉数据探索等操作,同时也就组成了数据仓库。
一致性维度的交付步骤
数据整合的关键就是生成一致性维度,再通过一致性维度将来自不同数据源的事实数据合并到一起,供分析使用。通常来说,生成一致性维度有如下三个步骤:
1.标准化(Standardizing)
标准化的目的是使不同数据源的数据编码方式,数据格式等相同,为下一步数据匹配打下基础(数据标准化中的代码标准化过程)。
2.匹配(Matching and Deduplication)
数据匹配的工作有两方面,一是将不同数据源的标识同一事物的不同属性匹配到一起(例如:客户的不同产品),使数据更完善;另一是将不同数据源的相同数据标识成重复,为下一步的筛选打下基础(例如:来源于不同数据源中重复的客户姓名)。
3.筛选(Surviving)
数据筛选的主要目的是选定一致性维度作为主数据(Master Data),也就是最终交付的一致性维度数据。
3、维度建模要点
选取业务处理,定义事实表的粒度,选定维度,确定事实;这四部是维度建模要点,这种方法,容易造成大量的数据烟囱,在模型管理和控制不好的情况下会造成数据与计算资源复用率低下,数据仓库数据量大量膨胀,同时存在数据模型缺乏体系性,使用数据复杂。
针对以上问题,应在于要在选取业务阶段,数据模型设计者需要具有全局和发展的视角,应该理解整体业务流程的基础上,从全局角度选取业务处理。首先数据仓库的模型设计者应该分析源系统的实体关系模型以及业务流程,选取在整体业务流程中的关键实体作为建模的基础,建立这些实体对象的数据粒度关系,因为不同粒度的数据是不能融合的一个事实表中的。通常可以从以下三个角度来建立事实表:
1.针对某个特定的行为动作,建立一个以行为活动最小单元为粒度的事实表。最小活动单元的定义,依赖于分析业务需求。比如用户的一次网页点击行为、一次网站登录行为,一次电话通话记录。这种事实表,主要用于从多个维度计,行为的发生情况,主要用于业务分布情况,绩效考核比较等方面的数据分析。
2.针对某个实体对象在当前时间上的状况。我们通过对这个实体对象在不同阶段存储它的快照,比如账户的余额、用户拥有的产品数等,通过这种可以统计实体对象在不同的生命周期中的关键数量指标。
3.针对业务活动中的重要分析和跟踪对象,统计在整个企业不同业务活动中的发生情况。比如会员,可以执行或参与多个特定的行为活动。这种事实表是以上两种事实表的一个总结和归纳。它主要用于针对我们业务中的活动对象进行跟踪和考察。
最近建了一个数据仓库小群,已经有100多人,添加下方我的公微信,申请入群参与话题讨论,还可获取《数据仓库工具箱》电子书。