模块开发-数据仓库的设计 及星型模型 雪花模型 星座模型
模块开发—数据仓库设计
1.维度建模:专门用于分析性数据库【还有数据仓库/数据集市建模的方法】的设计。 数据集市可以理解为一种小型的数据仓库。
维度表(dimension):就是分析事物的某个角度 数据量不大 精确度高 如:“昨天下午我在星巴克花费 200 元喝了一杯卡布奇诺” 从这句话中我们可以划分三个维度:时间维度;地点维度;商品维度
事实表(fact table):表示对分析主题的度量。事实表包含了 与各维度表相关联的外键,并通过jion方式与维度表关联。事实表的度量一般是数值类型,且记录数会不断增加,表规模迅速增长。比如上面消费的例子
消费事实表:prod_id(引用商品的维度表);timekey(引用时间维度表);place_id(引用地点维度表),Unit(销售量)
总的来说:数据仓库不需要严格遵守规范化设计原则。因为数据仓库的主导功能是面向主题,以查询为主,不涉及到数据更新操作。同时事实表的设计是以能够正确记录历史信息为准则,维度表的设计是能够以合适的角度聚合主题内容为准则。
维度建模的三种方式:
1.星型模式(star schema)最常用的维度建模模式:星型模式是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。
特点:a.维度表只和事实表关联,维度表之间没有关联。
b.每个维度表主键为单列,且该主键放置在事实表中,作为俩边连接的外键。
C.以事实表为核心,维度表围绕核心呈现星星分布
如图:
2.雪花模式(snowflake schema):是对星型模式的扩展。雪花模式的的维度表可以拥有其他维度表的但是由于这种模型维护成本太高,而且性能方面需要关联多层维度表,性能也比星型模型低。所以一般不常用。
如图:
3.星座模式:星座模式是由星型模式延伸而来,星型模式是基于一张事实表而星座模式是基于多张事实表,而且共享维度表信息。
在业务发展后期,绝大部分维度建模都采用的是星座模式
如图:
举例:采用星型模式设计数据仓库
1.事实表设计:
2.维度表设计:
注意:
维度表的数据一般要结合业务情况自己写脚本按照规则生成,也可以使用工具生成,方便后续的关联分析。比如一般会事前生成时间维度表中的数据,跨度从业务需要的日期到当前日期即可.具体根据你的分析粒度,可以生成年,季,月,周,天,时等相关信息,用于分析。
二 模块开发: ETL
Etl 工作的实质就是从各个数据源提取数据,对数据进行转换,并最终加载填充数据到数据仓库维度建模后的表中。只有当这些维度/事实表被填充好,ETL工作才算完成。
本项目的数据分析过程在hadoop集群上实现,主要应用hive数据仓库工具,因此,采集并经过预处理后的数据,需要加载到hive数据仓库中,已进行后续的分析过程。