数仓分层

https://blog.csdn.net/BeiisBei/article/details/105723188#_19

https://www.saoniuhuo.com/article/detail-72.html

https://www.dianjilingqu.com/20890.html

https://www.i4k.xyz/article/wjt199866/115184169#ODS__100

1.为什么要分层

1.清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
2.数据血缘追踪:简单来讲可以这样理解,我们最终给业务呈现的是一张能直接使用的张业务表,但是它的来源有很多,如果有一张来 源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
3.减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
4.把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
5.屏蔽原始数据的异常:屏蔽业务的影响,不必改一次业务就需要重新接入数据。

2.分层结构

2.1 ODS层

作用

https://blog.csdn.net/xuebo_911/article/details/8156016#

起到备份数据的作用

构建

1 直接加载原始日志、数据,保持原貌不做处理

2.2 DIM层

dim存放维度表,dwd存放事实表

作用

维度表可以看作是用户来分析数据的窗口,维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。

构建

https://help.aliyun.com/document_detail/137615.html

1 构建维度表,主要是对业务事实的描述信息,例如何人,何时,何地等

2.3 DWD层

作用

保存业务事实明细,一行信息代表一次业务行为,例如一次下单。

构建

1 对ODS层数据进行清洗(去除空值,脏数据,超过极限范围的数据、脱敏等)

2 构建事实表

https://help.aliyun.com/document_detail/114457.html

2.4 DWS

作用

避免重复计算

1)问题引出

两个需求,统计每个省份订单的个数、统计每个省份订单的总金额,都是将省份表和订单表进行join,group by省份,然后计算。同样数据被计算了两次,实际上类似的场景还会更多。

2) 那怎么设计能避免重复计算呢?

针对上述场景,可以设计一张地区宽表,其主键为地区ID,字段包含为:下单次数、下单金额、支付次数、支付金额等。上述所有指标都统一进行计算,并将结果保存在该宽表中,这样就能有效避免数据的重复计算。

构建

https://help.aliyun.com/document_detail/126913.html

0 分主题

1 构建宽表

2 以DWD为基础,按天进行轻度汇总。DWS层存放的所有主题对象当天的汇总行为,例如每个地区当天的下单次数,下单金额等

2.5 DWT

和DWS区别

DWS按天进行轻度汇总,DWT累积汇总

作用

避免重复计算

构建

0 分主题

1 构建宽表

2 以DWS为基础,对数据进行累积汇总。DWT层存放的是所有主题对象的累积行为,例如每个地区最近7天(15天、30天、60天)的下单次数、下单金额等

2.6 ADS层

作用

为各种统计报表提供数据

构建

1 由于这层的数据量不大,所有没有分区,列式存储,压缩

3.构建过程

借助hive,主要就是写SQL,核心步骤就是:

1.建表

2.分区规划

​ 按什么分区,比如说按天,按月

​ 注意数据同步策略,全量,增量等

3.数据装载

​ 注意首日,每日

联系业务和不同层的要求

4.全流程调度

Azkaban


:D 一言句子获取中...