数据仓库中的拉链表
1)数仓项目需求分析:
1.实时采集埋点的用户行为数据(埋点数据一般采集的是用户行为数据)
2.实现数据仓库的分层搭建
3.每天定时导入业务数据(业务数据:订单,注册,登录等数据)
4.根据数据仓库中的数据进行报表分析
数据产生的来源:
数据来源:
(1)埋点用户行为数据:用户在使用产品过程中,与客户端产品交互过程中产生的数据,比如页面浏览,点击,停留,评论,点赞,收藏等
(2)业务交互数据:业务流程中产生的登录,订单,用户,商品,支付等相关的数据,通常存储在DB中,包括Mysql,Oracle等。
ods(原始数据层):存放原始数据,直接加载原始日志,数据。数据保持原貌不做处理。【例如:将原数据的json加载成一个字段,导入ods层表中】
dwd(明细数据层):结构和粒度与ODS层保持一致,对ODS层数据进行清洗(去除空值,脏数据,超过极限范围的数据),也有公司叫DWI【例如:将json串中的每个字段解析出来导入dwd层表中,或者形成商品的各种类型的表】
dws(服务数据层):这层一般会形成一个宽表。【例如:将用户行为数据的各种订单,支付,评论等数据整合到一张宽表中】
ads(数据应用层):数据应用层,各种统计报表。
把相关的各种表整理成两种:事实表和维度表两种,所有维度表围绕着事实表进行解释。
事实表和维度表:事实表就是你要关注的内容。维度表就是你观察该事务的角度,是从哪个角度观察该内容的。例如:某地区商品的销量,是从地区这个角度观察商品销量的,
事实表就是销量表,维度表就是地区表。(还有包子的销量,维度表是包子的种类,包子的门店,包子的销售时间)
事实表的分类:
(1)事务事实表:
(2)周期快照事实表:
(3)累积快照事实表:
在维度建模的基础上又分为三种模型:星型模型,雪花模型,星座模型。
星型模型(性能优先,级数少,减少join操作):雪花模型和星型模型的区别在于维度的层级,标准的星型模型维度只有一层,而雪花模型可能会涉及多级。
雪花模型(灵活优先,级数多,抽取更详细):
星座模型:星座模型与前两种的区别是事实表的数量,星座模型是基于多个事实表
Tez是一个Hive的执行引擎,性能优于MR.
新增表,全量表,新增+变化(拉链表)
https://blog.csdn.net/weixin_43679675/article/details/89453819
拉链表:记录历史数据的每个状态,记录一个事物从开始,一直到当前状态的所有变化的信息;拉链表通常是对账户信息的历史变动进行处理保留的结果。
拉链表形成过长:
订单当日全部数据和mysql中每天变化的数据拼接在一起,形成一个新的临时拉链表数据,
用临时的拉链表覆盖旧的拉链表数据(这就解决了hive表中数据不能更新的问题)
拉链表就增加了两个字段信息:有效开始日期和有效结束日期
olap和oltp的区别:
1、基本含义不同:OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,记录即时的增、删、改、查,比如在银行存取一笔款,就是一个事务交易。OLAP即联机分析处理,是数据仓库的核心部心,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态报表系统。
2、实时性要求不同:OLTP实时性要求高,OLTP 数据库旨在使事务应用程序仅写入所需的数据,以便尽快处理单个事务。OLAP的实时性要求不是很高,很多应用顶多是每天更新一下数据。
3、数据量不同:OLTP数据量不是很大,一般只读/写数十条记录,处理简单的事务。OLAP数据量大,因为OLAP支持的是动态查询,所以用户也许要通过将很多数据的统计后才能得到想要知道的信息,例如时间序列分析等等,所以处理的数据量很大。
4、用户和系统的面向性不同:OLTP是面向顾客的,用于事务和查询处理。OLAP是面向市场的,用于数据分析。
5、数据库设计不同:OLTP采用实体-联系ER模型和面向应用的数据库设计。OLAP采用星型或雪花模型和面向主题的数据库设计。