表1
订单id | 时间 | 用户 | 价格 |
---|---|---|---|
123 | 2020-12-22 11:38:16 | 1 | 11 |
321 | 2020-12-22 11:38:08 | 2 | 11 |
表2
订单id | 时间 | 季度 | 是否节假日 | 用户 | 价格 |
---|---|---|---|---|---|
123 | 2020-12-22 11:38:16 | q4 | n | 1 | 11 |
321 | 2020-12-27 11:38:08 | q4 | y | 2 | 11 |
表3
类型 | 销售额 |
---|---|
节假日 | 11111 |
非节假日 | 999 |
上面3个表可以看到,如果从表1直接得到表3,很难(缺少关键字段)
如果从表1 -> 表2 -> 表3 这样每个步骤单个都比较简单,最终也能得到表3的结果
这种模式叫迭代计算模式
在很多的业务场景中,很难从原始的事实表直接经过计算就得到你想要的结果。
中间会产生很多的中间结果表,经过这些中间结果一步步的得到你想要的内容。
由于我们做数据分析,大体上在数仓中都是迭代的计算,这种计算就会分层次来进行。
这种迭代,通用可以分为3个层级:
Original data service
原始数据层
记录的是输入数据仓库数据的原始的样子
或者经过少量
的修改的样子
基本上是和来源的地方一致
作用:一种数据备份,数据溯源(迭代计算的起点)
Data Warehouse
数据仓库层
在这个层级内就开始进行数据的迭代计算了,在这里会经过一步步的迭代最终得到我们想要的中间数据
DW层一般也会在内部详细划分出几个小层级
明细层DWD(Data Warehouse Detail):存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。
中间层DWM(Data WareHouse Middle):存储中间数据,为数据统计需要创建的中间表数据,此数据一般是对多个维度的聚合数据,此层数据通常来源于DWD层的数据。
业务层DWS(Data WareHouse Service):存储宽表数据,此层数据是针对某个业务领域的聚合数据,应用层的数据通常来源与此层,为什么叫宽表,主要是为了应用层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。
DWD 明细层:存储的数据粒度和ODS基本差不多,但是DWD的数据是从ODS经过清洗、转换、过滤后得到的。
也就是和ODS是很像的,但是里面的数据很规整,没有垃圾数据,没有无效数据,数据的格式都经过了统一化处理清洗:清除无效数据,比如NULL值,主键ID不存在的,数据超出范围的。
统一格式:时间统一成YYYY-mm-dd HH:mm:ss 这种格式,小数点统一为2位等等做格式上的统一
DWM中间层:进行维度的预聚合,预聚合指的是在通用的范围上进行聚合
比如,时间维度的聚合
DWS 业务层:针对业务
主题
完成数据聚合计算
很多时候,业务如果数据比较好,可以跳过DWM直接做DWS都是可以的。
有的时候,DWD也可以不要,需要ODS数据质量本身就很好的情况下。
Application data service
数据结果层
存储数据的计算结果,就是可以直接拿取用的,无需在执行计算的数据。
其实这3个层级,本质上就是:
不管怎么分层,总体上就是:
在企业中,分层是很乱的,有的企业多达7 8 层,有的企业可能就2层
大体上,离不开:输入、处理、输出
本文发布于:2024-01-27 19:53:30,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063564102298.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |