写点什么

数据仓库设计

发布于: 2021 年 03 月 21 日
数据仓库设计

1. 维度建模基本概念


维度建模:就是从业务需求出发,方便我们进行统计分析的建表建库的理论;


这套只适合我们的 OLAP 数据分析的业务;不适合 OLTP。


(扩展)mysql 三范式:1:每个字段的原子性;不可分割;2:字段之间不能依赖传递关系;3:主键唯一性,


为了自己的场景考虑:快速查询响应,安全性,事务等;


数据仓库建表需要满足上面的范式吗?


实际上不需要,数据仓库就是为了满足了一个目标,就是怎么方便分析就怎么设计!!


数据仓库中有哪些表?


事实表:就是客观事实的记录数据;清洗之后的日志数据;


维度表:维度就是角度;一个角度所有可选项的集合;时间维度,地域维度;用户维度;终端维度;总共是 10 个维度;


1.1. 事实表


事实表是对分析主题的一个度量;


你的需求分析什么?


分析用户访问日志:主题:用户的访问日志;用户访问日志数据、表;


分析一年的订单销售情况?主题:分析订单销售情况;订单表--》事实表;


进入公司:


让你统计去年一年销售情况?


数据从哪里哪里来?考虑有没有数据支撑你的需求统计;要找到事实表,如果没有直接的事实表,可以考虑自己创建,但是一定要得有原始数据支撑!!


事实表:会是一堆主键的堆积;主键 id 所对应的的表一般就是我们分析的一个维度。


订单表设计:


字段:orderid;productId;regionId;


1.2. 维度表


2. 维度建模三种模式


在数据仓库中你的事实表和维度表以何种形式存在?一种模式就是一种存在的形式!!


2.1. 星型模式


一个事实表周围散列多个维度表;数据仓库发展初期采用的模型,一个事实表;


2.2. 雪花模式


一个事实表周围散列维度表的同时,维度表自身又进行了拓宽,还需要与其它维度表 join,后期维护成本;


这种架构是尽量避免;


2.3. 星座模式


多张事实表共用某些维度表,注意不是所有的维度表都进行共用;


3. 本项目中数据仓库的设计


分析用户访问行为:


主题:分析用户行为:


事实表:用户日志数据,mr 清洗之后的数据;


维度表:时间维度,session 维度,来源维度等;维度表取决于具体的业务?根据指标而来。


模型:星型模型:


pageview + visitview 属于什么表呢?


既不属于维度表也不属于我们的事实表,属于我们事实表的一个业务延伸,都是从事实表处理转换而来!!


拓宽后的宽表字段:



在数据仓库的建表中最高标准就是便于分析,我们可以为了分析方便拓宽表实际上相当于冗余存储了一份!!


发布于: 2021 年 03 月 21 日阅读数: 13
用户头像

还未添加个人签名 2021.03.07 加入

还未添加个人简介

评论

发布
暂无评论
数据仓库设计