数仓(一)数据分层

文章目录

  • 数据分层
    • 好处
    • 数据运营层
    • 数据仓库层
    • 数据应用层
    • 事实表`(Fact Table)`
    • 维表层(`Dimension`)
    • 表命名规则
      • 聚合粒度以及加工频率字段说明
      • 抽取方式字段命名规范
      • 数据表名命名规范
      • 表分区字段说明
      • 任务命名规范
    • 大厂分层架构
      • 爱奇艺
      • SaaS收银运营数仓分层架构
      • 美团数仓分层架构
      • 网易云音乐数仓分层架构

数据分层

数据分层在建设数据仓库中是一个十分重要的环节,良好的数据分层能够使得数据仓库更容易理解和使用,提升数据处理速度,并且能够降低存储压力和企业成本。在数据仓库建设中,数据分层主要分为数据运营层、数据仓库层、数据应用层。

好处

数据分层的好处:

  • 清晰数据结构:让每个数据层都有自己的作用和职责,在使用和维护的时候能够更方便和理解
  • 复杂问题简化:将一个复杂的任务拆解成多个步骤来分步骤完成,每个层只解决特定的问题
  • 统一数据口径:通过数据分层,提供统一的数据出口,统一输出口径
  • 减少重复开发:规范数据分层,开发通用的中间层,可以极大地减少重复计算的工作

数据运营层

数据运营层ODS(Operation Data Store) -也就是最接近数据源的一层,直接对接的数据源(如:业务库、埋点日志、消息队列等)。ODS数数仓的最底层。

该层是存储数量最大的、未经过太多处理的、最原数据始的一层。该层还起到一个数据备份的作用,比如特殊的行业,一般ODS层需要存储一年甚至多年,不过普通公司一般存储三个月到六个月。

一般情况下,在数据进入ODS层的时候,都会对数据做一些最基本的处理。例如:

  • 数据来源分区
  • 数据按照时间分区存储,一般按照天分区,也有一些公司按照年、月、日三级分区存储
  • 进行最基本的数据处理,如格式错误的丢弃、过滤掉关键信息丢失的数据。

注意:一般公司也会把以上的基本处理放到DWM层来进行。

数据仓库层

  • DWD(Data WareHouse Detail) -数据细节层。该层与ODS层保持相同的数据颗粒度,区别在于,改成主要是对ODS层进行数据的清洗和规范化操作,比如说去除空数据、脏数据等。该层由于对数据处理的粒度比较细,一般情况下都是编写代码实现的。很多时候存储的是事实表、维度表和实体表。
  • DWM(Data WareHouse Middle) -数据中间层。该层主要是对DWD层做一些轻微的聚合操作,生成一些指标列的聚合结果表。
  • DWS(Data WareHouse Service) -数据服务层。该层是在DWM层基础之上,整合汇总成一个主题域的数据服务层,一般是宽表(具有多个列的表),该层为后续的业务查询、OLAP分析和数据分发提供支撑。

数据应用层

数据应用层ADS(Application Data Service) -该层主要为数据产品和数据分析提供数据支撑。一般会存放在ES、MySQL、Redis等数据库系统中,为应用系统提供数据,也可以存放在hive或者Druid中,供数据分析与数据挖掘使用,比如数据报表就是存在该层中。

事实表(Fact Table)

事实表是指存储有事实记录的表,比如系统日志、销售记录等。事实表的记录在不断地增长,比如电商的商品订单表,就是类似的情况,所以事实表的体积通常是远大于其他表。

维表层(Dimension)

维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联,相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。维度表主要是包含两个部分:

  • 高基数维度数据:一般是用户资料表、商品资料表类似的资料表,数据量可能是千万级或者上亿级别
  • 低基数维度数据:一般是配置表,比如枚举字段对应的中文含义,或者日期维表等;数据量可能就是个位数或者几千几万。

常见的维度表有:日期表(存储与日期对应的周、月、季度等的属性)、地点表(包含国家、省/州、城市等属性)等。

表命名规则

聚合粒度以及加工频率字段说明

字段中文 字段 字段全称 说明
d day 每天
w week 每周
m month 每月
y year 每年
小时 h hour 每小时
半小时 hh halfhour 每半小时

抽取方式字段命名规范

抽取方式 字段 字段全称
全量 f full
增量 i incremental
拉链 c chain

数据表名命名规范

模型层次 表命名规范 实例表明 实例表说明
ods ods_业态简称+系统入仓序号_源表名_加工频率+抽取方式 ods_sg01_bill_df ods为模型层次、sg为业态、01为业态下的系统入仓序号、bill代表数据源表名、d代表加工频率、f代表全量抽取方式
dwd dwd_主题域_可选的主题_事实表相关描述_加工频率+抽取方式 dwd_par_trader_detail_df dwd为模型层次、par为主题域名、trader为商户主题名、detail为表描述、d代表加工频率、f代表全量抽取方式
dwm dim_通用维度相关描述_加工频率+抽取方式 dwm_brand_df dwm为模型层次、brand为通用维度表描述、d代表加工频率、f代表全量抽取方式
dws dws_主题域_可选的主题相关描述_聚合粒度+抽取方式 dws_par_trader_count_df dws为模型层次、par为主题域名、trader为商户主题名、count为表的描述、d代表加工聚合粒度、f代表全量抽取方式
ads ads_主题域_相关描述_加工频率+抽取方式 ads_trader_count_df ads为模型层次、trader_count代表相关描述、d代表加工频率、f代表全量抽取方式

表分区字段说明

分区类型 分区字段 分区数据格式 备注
按天分区 stat_date YYYYMMDD
按周分区 stat_week 自定义 转换当天所在月或者直接使用当周最后一天都可
按月分区 stat_month YYYYMM
按年分区 stat_year YYYY
按小时分区 stat_date YYYYMMDDHH
按半小时分区 stat_date YYYYMMDDHHMM

任务命名规范

数仓(一)数据分层_第1张图片

大厂分层架构

爱奇艺

数仓(一)数据分层_第2张图片

SaaS收银运营数仓分层架构

数仓(一)数据分层_第3张图片

数仓(一)数据分层_第4张图片

这里作者的案例是美团站点分享的SaaS收银运营数仓建设一文中的架构,这个分层架构大概是五层,虽然从名称上看着和通用分层架构差异比较大,实际具体功能上,只是增加了一个DWT主题宽表层,APP层和通用的ADS层作用基本一致,DWA汇总层其实和通用的DWS层是类似的。

DWT层主题宽表层,其实是对DWD各层的信息进行join整合,基于主题,将业务过程相关的数据冗余处理,从而方便上层DWS汇总数据使用。

美团数仓分层架构

数仓(一)数据分层_第5张图片

网易云音乐数仓分层架构

数仓(一)数据分层_第6张图片

你可能感兴趣的:(数仓,数据仓库,数据挖掘,big,data)