数仓架构流程二

第二章 数仓分层与规范定义



数仓分层与规范定义

一、数仓分层

现在数仓的技术选型主要有两种:
一种是自建的CDH集群,基于hive来搭建离线数仓,基于flink的搭建实时部分。
一种是基于阿里云的dataworks这种一站式大数据开发与治理平台。
个人感觉dataworks比较好
在这里插入图片描述
在这里插入图片描述


二、设计规范

1 公共规范

1.1 数据划分及命名空间约定

请根据业务划分数据并约定命名,建议针对业务名称结合数据层次约定相关命名的英文缩写,这样可以给后续数据开发过程中,对项目空间、表、字段等命名做为重要参照。

  • 按业务划分:命名时按主要的业务划分,以指导物理模型的划分原则、命名原则及使用的ODS
    project。例如,按业务定义英文缩写,阿里的“淘宝”英文缩写可以定义为“tb”。
  • 按数据域划分:命名时按照CDM层的数据进行数据域划分,以便有效地对数据进行管理,以及指导数据表的命名。例如,“交易”数据的英文缩写可定义为“trd”。
  • 按业务过程划分:当一个数据域由多个业务过程组成时,命名时可以按业务流程划分。业务过程是从数据分析角度看客观存在的或者抽象的业务行为动作。例如,交易数据域中的“退款”这个业务过程的英文缩写可约定命名为“rfd_ent”。
1.2 公共字段定义规范
  • 数据统计日期的分区字段按以下标准:
    • 按天分区:ds(YYYYMMDD)。
    • 按小时分区:hh(00~23)。
    • 按分钟:mi(00~59)。
  • is_{业务}:表示布尔型数据字段。以Y和N表示,不允许出现空值域。
  • 原则上不需要冗余分区字段。
  • 含业务含义字段默认值:
    涉及金额字段默认值:0.00
    涉及数量字段默认值:0
    涉及数字型字段默认值:-9
    字符类字段默认值: -
    date型默认值:1970-01-01
    timestamp型默认值:1970-01-01 00:00:00.000
mysql数据类型hive数据类型MaxCompute数据类型
整型bigintBIGINTBIGINT
整型intBIGINTBIGINT
整型smallintBIGINTBIGINT
整型tinyintBIGINTBIGINT
浮点型decimaldecimaldecimal
浮点型doubleDOUBLEDOUBLE
浮点型floatDOUBLEFLOAT
二进制binaryBINARYSTRING
二进制varbinaryBINARYSTRING
字符charSTRINGSTRING
字符varcharSTRINGSTRING
字符mediumtextSTRINGSTRING
字符textSTRINGSTRING
时间datetimeSTRINGdatetime
时间timeSTRINGSTRING
时间timestampSTRINGSTRING
时间datedatedate

2 设计规范

ods层

ODS(Operational Data Store)层存放您从业务系统获取的最原始的数据,是其他上层数据的源数据。业务数据系统中的数据通常为非常细节的数据,经过长时间累积,且访问频率很高,是面向应用的数据

  • 表命名规范
    表命名规则:{层次}下划线{源系统表名}下划线{保留位/delta与否}。

    • 增量数据:ods_{源系统表名}_delta。
    • 全量数据:ods_{源系统表名}。
    • ODS ETL过程的临时表:tmp_{临时表所在过程的输出表}_{从0开始的序号}。
    • 按小时同步的增量表:ods_{源系统表名}__{delta}_{hh}。
    • 按小时同步的全量表:ods_{源系统表名}_{hh}。

    当不同源系统同步到同一个Project下的表命名冲突时,您需要给同步较晚的表名加上源系统的dbname以解决冲突。

  • 字段命名规范

    • 字段默认使用源系统的字段名。
    • 字段名与关键字冲突时,在源字段名后加上col,即源字段名col。
dim层

公共维度汇总层(DIM)主要由维度表(维表)构成。维度是逻辑概念,是衡量和观察业务的角度。维表是根据维度及其属性将数据平台上构建的物理化的表,采用宽表设计的原则。因此,公共维度汇总层(DIM)首先需要定义维度。
设计维表的主要步骤如下:

  1. 初步定义维度。
    保证维度的一致性。
  2. 确定主维表(中心事实表,本教程中采用星型模型)。
    此处的主维表通常是数据引入层(ODS)表,直接与业务系统同步。例如,s_auction是与前台商品中心系统同步的商品表,此表即是主维表。
  3. 确定相关维表。
    数据仓库是业务源系统的数据整合,不同业务系统或者同一业务系统中的表之间存在关联性。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成维度属性。以商品维度为例,根据对业务逻辑的梳理,可以得到商品与类目、卖家和店铺等维度存在关联关系。
  4. 确定维度属性。
    主要包括两个阶段。第一个阶段是从主维表中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。以商品维度为例,从主维表(s_auction)、类目、卖家和店铺等相关维表中选择维度属性或生成新的维度属性。维度属性的设计需要注意:
    • 尽可能生成丰富的维度属性。
    • 尽可能多地给出富有意义的文字性描述。
    • 区分数值型属性和事实。
    • 尽量沉淀出通用的维度属性。

公共维度汇总层(DIM)维表命名规范: dim_{业务板块名称/pub}{维度定义}[{自定义命名标签}],pub是与具体业务板块无关或各个业务板块都可公用的维度。例如,时间维度;

dwd层

明细粒度事实层DWD(Data Warehouse Detail)以业务过程驱动建模,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。您可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。

通常您需要遵照的命名规范为:dwd_{业务板块/pub}{数据域缩写}{业务过程缩写}[_{自定义表命名标签缩写}] _{单分区增量全量标识},pub表示数据包括多个业务板块的数据。单分区增量全量标识通常为:i表示增量,f表示全量。例如: dwd_asale_trd_ordcrt_trip_di(A电商公司航旅机票订单下单事实表,日刷新增量)及dwd_asale_itm_item_df(A电商商品快照事实表,日刷新全量)。

dws层

公共汇总粒度事实层DWS(Data Warehouse Summary)以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求构建公共粒度的汇总指标事实表。公共汇总层的一个表至少会对应一个派生指标。
公共汇总事实表命名规范:dws_{业务板块缩写/pub}{数据域缩写}{数据粒度缩写}[{自定义表命名标签缩写}]{统计时间周期范围缩写}
关于统计实际周期范围缩写,缺省情况下,离线计算应该包括最近一天(_1d),最近N天(_nd)和历史截至当天(_td)三个表。如果出现_nd的表字段过多需要拆分时,只允许以一个统计周期单元作为原子拆分。即一个统计周期拆分一个表,例如最近7天(_1w)拆分一个表。不允许拆分出来的一个表存储多个统计周期。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值