1.根据业务需求构建总线矩阵--明确需求
构建总线矩阵的目的:总线矩阵也是BI核心之一,基本上只要详细了解企业业务战略线就能得出总线矩阵,它对应着企业每一个业务单元,提取业务单元中的一致性维度和事实量值组 组合成企业总线矩阵也就是多维分析模型;总线矩阵也是BI项目实施交付的必要成果之一,它与数据仓库的概念模型非常吻合。
时间 | 用户 | 地区 | 商品 | 优惠券 | 活动 | 编码 | 度量值 | |
订单 | √ | √ | √ | √ | 件数/金额 | |||
订单详情 | √ | √ | √ | √ | 件数/金额 | |||
支付 | √ | √ | √ | 金额 | ||||
加购 | √ | √ | √ | 件数/金额 | ||||
收藏 | √ | √ | √ | 个数 | ||||
评价 | √ | √ | √ | 个数 | ||||
退款 | √ | √ | √ | 件数/金额 | ||||
优惠券领用 | √ | √ | √ | 个数 |
2.数据建模
2.1总体规划
-
业务建模,这部分建模工作,主要包含以下几个部分:
划分整个单位的业务,一般按照业务部门的划分,进行各个部分之间业务工作的界定,理清各业务部门之间的关系。
深入了解各个业务部门的内具体业务流程并将其程序化。
提出修改和改进业务部门工作流程的方法并程序化。
数据建模的范围界定,整个数据仓库项目的目标和阶段划分。
-
领域概念建模,这部分得建模工作,主要包含以下几个部分:
抽取关键业务概念,并将之抽象化。
将业务概念分组,按照业务主线聚合类似的分组概念。
细化分组概念,理清分组概念内的业务流程并抽象化。
理清分组概念之间的关联,形成完整的领域概念模型。
-
逻辑建模,这部分的建模工作,主要包含以下几个部分:
业务概念实体化,并考虑其具体的属性
事件实体化,并考虑其属性内容
说明实体化,并考虑其属性内容
-
物理建模,这部分得建模工作,主要包含以下几个部分:
针对特定物理化平台,做出相应的技术调整
针对模型的性能考虑,对特定平台作出相应的调整
针对管理的需要,结合特定的平台,做出相应的调整
生成最后的执行脚本,并完善之。
2.2维度建模
-
什么是维度建模
维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。
维度建模并不要求维度模型必须满足第3范式。数据库中强调的 3NF 主要是为了消除冗余。而维度建模解决了模式过分复杂的问题。
-
什么是星形模型
星型模型就是我们一种典型的维度模型。我们在进行维度建模的时候会建一张事实表,这个事实表就是星型模型的中心,然后会有一堆维度表,这些维度表就是向外发散的星星。
-
事实表
发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。
-
维度表
每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。 维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。
3.数仓建模过程
3.1准备工作
- 首先需要将业务数据库的数据结构同步到EZDML或者PD等工具,根据外键id把所有表关联到一起。方便梳理业务关系。
- 然后利用工具,将数据导入数仓中,进行处理。
3.2数仓分层架构的一种(五层架构)
-
ods:
-
存放原始数据(日志,数据)
-
创建分区表,防止后续全表扫描
-
采用LZO压缩,减少磁盘存储空间
ODS到DWD层需要做的事情:
ETL(用hql,mr,sparksql,kettle,python)
清洗的原则:解析日志、核心字段不能为空、超期数据过滤掉、重复数据过滤匹配手机号、身份证号、邮箱、qq
清洗掉多少数据:万分之一,不合格时候查自己的代码、前端、javaee
采用压缩:LZO(减少磁盘空间)
列式存储,加快查询速度,减少磁盘空间
数据脱敏 手机号等(非要用手机号时候1.加权限 2.md5加密)
-
dwd-数据明细层:
1、选择业务过程:中小型公司全选业务表,大型公司表比较多,根据需求主线选择表
2、数据清洗:去除控制、脏数据、超过范围极限的数据、维度退化、脱敏等
3、声明数据粒度:每一行代表一次下单、一个行为(选择最小粒度,不聚合)
3、确定维度a
什么时间、什么地点、谁、活动、优惠券、业务名词
4、确定事实
度量值:次数、件数、金额、个数
维度退化:维度退化的依据是维度建模中的星型模型:事实表周围一级维度,减少后续的join
退化过程:商品表、spu、品类表、一级分类、二级分类、三级分类=》商品维度表
省份表、地区表=》地区维度表
dws:
1.以dwd为基础,按天进行轻度汇总
dwt:
- 确定哪些宽表
站在维度的角度看事实:“地区、用户、设备、活动、优惠券
- 宽表的字段怎么来
站在维度的角度看事实,开始时间,结束时间、累计度量值、最近一段时间累计度量值。
ads:
- 出报表:手写