数据分层

数据运营层:ODS(Operational Data Store)

ODS层,最接近源数据层,为了考虑后续数据追溯,这一层不建议做过多的数据清洗工作,最好原封不动的接入原始数据。

数据仓库层:DW(Data Warehouse)

数据仓库层是我们在做数据仓库时要核心设计的一层,在这里,要从ODS层提取数据建立各种数据模型,DW层又细分为DWD层,DWM层和DWS层。

  • DWD(Data Warehouse Detail)
    DWD层要做的是将数据清理、整合、规范化、脏数据、垃圾数据、规范不一致的、状态定义不一致的、命名不规范的数据整合成统一规格(粒度)。

同时为了提高数据的易用性,要采用一些维度退化操作,将一些维度退化到事实内,减少事实表与维度表的关联。

另外,也要做一些数据聚合,将相同数据的表汇聚在一张表,提高数据可用性。

  • DWM(Data Warehouse Middle)
    DWM会在DWD层的基础上,对数据做轻度的聚合操作,生成一系列中间表,提升公共指标的复用性,减少重复加工。

如果直接从DWD层直接把数据拉取到DWS层的话会因为计算力太大或维度太少造成资源消耗过大。

所以一般的解决方案是先从DWD层计算几个DWM表,然后直接拼接成DWS层,DWM层可以直接用完即删。

  • DWS(Data Warehouse Servce)
    DWS层为公共汇总层,会进行轻度汇总,粒度比明细数据稍粗,DWS层会整合汇总成分析某一个主题域的服务数据,一般是宽表。DWS层至少覆盖80%的应用场景,又称DM层。

按照业务划分,如主题域–流量、订单、用户等,生成字段比较多的宽表,用于后续查询。

数据应用层:APP(Application)

APP层主要用于提供数据产品和数据分析使用的数据,一般存放在ES、PostgreSQL、Redis等系统中供线上系统使用,也可以使用OLAP引擎供数据分析与数据挖掘使用,报表数据就来源于这里。

维度层DIM(Dimension)

维度层包含两个部分:
高基数维度数据:一般是用户资料表、商品资料表类似的资料表,数据量可以上千万上亿。
低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维度表,数据量大概在几千几万。

数据仓库 整合层 贴源层 数据仓库dwm层_数据仓库 整合层 贴源层

表规范

数据仓库 整合层 贴源层 数据仓库dwm层_数据_02


首先判断这个表的用途,是业务数据/日志接入数据、中间表还是业务输出数据,如果是中间表,那么判断该表是否需要分组操作,如果不需要就导入DWD层,需要的话就需要判断表是否是多个行为表的汇总表(宽表)。最后加上事业群、部门、业务线、自定义名称和更新频率等信息即可。

命名规范:

范围

符号

维度层

dim

数据集市层

dm

贴源数据层

ods

数据明细层

dwd

数据汇聚层

dws

日快照

d

增量

i


w

拉链表

l

非分区全量表

a

常规表

常规表是我们需要固化的表, 是正式使用的表,也就是需要投入精力去维护的表。

命名规范:分层前缀[dwd|dws|ods]_部门_业务域_主题域_XXX_更新周期|数据范围

业务域与主题域可以用词根的方式枚举清除,不断完善。

更新周期主要是时间粒度、日、月、年、周等。

中间表

中间表一般存在于作业中,中间表的作用域只在当前Job执行过程中,Job一旦执行完毕,该表可以释放(一般情况下会保留几天来回溯)。

命名规范:mid_table_name_[0~9|dim]

以mid开头,接表名,最后以特定的词语或数字编号结尾,如果遇到需要补全维度的表,就以dim结尾。如果需要保留历史记录,name就要加上时间戳。

临时表

临时表就是临时测试或查看数据用的表,可以随时删除。

命名规范:tmp_xxx

以tmp开头即可。

维度表

维度表可以从ods层抽取出来,也可以手工维护。

命名规范:dim_xxx

以dim开头,表名与内容有关即可。

手工表(明细表)

手工表是整个仓库的核心,一般都是一次初始化,然后就不会自由变动了,发生变动也是手动维护。

命名规范:dwd_业务域_manual_xxx

dwd表示明细层,后接业务域,manual表示手工维护表,后接表名

数据处理方式

增量表

增量数据是上次导出后的新数据。

  • 记录每次增加的量,而不是总量
  • 只汇报变化量,无变化不汇报
  • 每天一个分区

数据仓库 整合层 贴源层 数据仓库dwm层_数据仓库 整合层 贴源层_03

全量表

所有的数据。

  • 全量表,有无变化都要报。
  • 每次上报的数据都是所有的数据
  • 只有一个分区

数据仓库 整合层 贴源层 数据仓库dwm层_命名规范_04

快照表

按日分区,记录截止数据日期的全量数据。

  • 快照表,有无变化,都要报
  • 每次上报的数据都是所有的数据
  • 一天一个分区

数据仓库 整合层 贴源层 数据仓库dwm层_命名规范_05

拉链表

记录截止日期的全量数据

  • 记录一个事物从开始,一直到当前状态的所有变化的信息
  • 拉链表每次上报的都是历史记录的最终状态,是记录在当前时刻的历史总 量
  • 当前记录存的是当前时间之前的所有历史记录的最后变化量(总量)
  • 只有一个分区


数据仓库 整合层 贴源层 数据仓库dwm层_命名规范_06