一篇文章搞懂数据仓库:数据仓库规范设计

简介: 一篇文章搞懂数据仓库:数据仓库规范设计

正文


一、为什么要进行规范设计?


无规矩、不方圆。规范设计是在具体开发工作之前制定的,过程中不断进行完善。目的在于约束N个人对齐认知,按照一个标准或流程进行开发,以保证数据一致性,流程清晰且稳定。


一个良好的规范设计,应当起到以下作用:提高开发效率,提升质量,降低沟通对齐成本,降低运维成本等。


下面小编将带领大家盘一盘数据仓库有哪些规范,从中挑选几个重点细说:


设计规范

           逻辑架构、技术架构、分层设计、主题划分、方法论


命名规范

           各层级命名、任务命名、表命名、字段命名、指标命名等


模型规范

           建模方法、建模工具、血缘关系、维度退化、一致性维度、元数据管理


开发规范

           脚本注释、字段别名、编码规范、脚本格式、数据类型、缩写规范


流程规范

           需求流程、工程流程、上线流程、调度流、调度和表生命周期管理



二、设计规范 - 指标


Step1:面向主题域管理

为了提高指标管理的效率,你需要按照业务线、主题域和业务过程三级目录方式管理指标。


Step2:划分原子指标和派生指标

原子指标 + 原子指标  = 派生指标


Step3:进行指标命名规范

需要遵循两个原则:易懂与统一


易懂,就是看到指标的名称,就可以基本判断这个指标归属于哪个业务过程;

统一,就是要确保派生指标和它继承的原子指标命名是一致的。

对于原子指标,标名称适合用“动作 + 度量”的命名方式(比如注册用户数、购买用户数)


对于派生指标,应该严格遵循“时间周期 + 统计粒度 + 修饰词 + 原子指标”的命名方式。(比如30天内黑卡会员购买用户数)


Step4:分级管理

指标确实是多,如果一视同仁去管理其实很难,所以可以按照下面的原则进行等级划分:


一级指标:数据中台直接产出,核心指标(提供给公司高层看的)、原子指标以及跨部门的派生指标。

二级指标:基于中台提供的原子指标,业务部门创建的派生指标。


三、命名规范 - 表命名


3.1 常规表


常规表是我们需要固化的表,是正式使用的表,是目前一段时间内需要去维护去完善的表。


规范:分层前缀[dwd|dws|ads|bi]_业务域_主题域_XXX_更新评率|全量/增量。


业务域、主题域我们都可以用词根的方式枚举清楚,不断完善,粒度也是同样的,主要的是时间粒度、日、月、年、周等,使用词根定义好简称。


例如:  dwd_xxx_xxx_da


di :每日增量


da:每日全量


mi:每月增量


ma:每月全量


3.2 中间表


中间表一般出现在Job中,是Job中临时存储的中间数据的表,中间表的作用域只限于当前Job执行过程中,Job一旦执行完成,该中间表的使命就完成了,是可以删除的(按照自己公司的场景自由选择,以前公司会保留几天的中间表数据,用来排查问题)。


规范:mid_table_name_[0~9|dim]


table_name是我们任务中目标表的名字,通常来说一个任务只有一个目标表。这里加上表名,是为了防止自由发挥的时候表名冲突,而末尾大家可以选择自由发挥,起一些有意义的名字,或者简单粗暴,使用数字代替,各有优劣吧,谨慎选择。通常会遇到需要补全维度的表,这里我喜欢使用dim结尾。中间表在创建时,请加上 ,如果要保留历史的中间表,可以加上日期或者时间戳


3.3 临时表


临时表是临时测试的表,是临时使用一次的表,就是暂时保存下数据看看,后续一般不再使用的表,是可以随时删除的表。


规范:tmp_xxx


只要加上tmp开头即可,其他名字随意,注意tmp开头的表不要用来实际使用,只是测试验证而已。


3.4 维度表


维度表是基于底层数据,抽象出来的描述类的表。维度表可以自动从底层表抽象出来,也可以手工来维护。


规范:dim_xxx


维度表,统一以dim开头,后面加上,对该指标的描述,可以自由发挥。


四、开发规范


1

表和列的注释释是否有缺失,复杂计算逻辑是否有注释释

2

任务是否支持多次重跑而输出不变,不能有insert into语句

3

分区表是否使用分区键过滤并且有有效裁剪

4

外连接的过逑条件是否使用正确,例如在左连接的where语句存在右表的过滤条件

5

关联小表,是否使用/*+ map join * / hint

6

不允许引用别的计算任务临时表

7

原则上不允许存在一个任务更新多个目标表

8

是否存在笞、迪卡尔积

9

禁止在代码里面使用drop 111ble、creat它111ble、renaiue 111ble、chan零column等ddl语句

10

使用动态分区时,有没有检查分区键值为NULL的情况

11

DQC质量监控规则是否配置,严禁棵奔

12

代码中有没有进行适当的规避数据倾斜语句

13

Where条件中is null语句有没有进行空字符串处理


五、流程规范


根据阿里流程规范,本文将数据仓库研发流程抽象为如下几点:


需求阶段:数据产品经理应如何应对不断变化的业务需求。

设计阶段:数据产品经理、数据开发者应如何综合性能、成本、效率、质量等因素,更好地组织与存储数据。

开发阶段:数据研发者如何高效、规范地进行编码工作。

测试阶段:测试人员应如何准确地暴露代码问题与项目风险,提升产出质量。

发布阶段:如何将具备发布条件的程序平稳地发布到线上稳定产出。

运维阶段:运维人员应如何保障数据产出的时效性和稳定性。


000000000000000.png

相关文章
|
消息中间件 搜索推荐 算法
数据仓库常见规范
数据仓库常见规范
数据仓库常见规范
|
存储 SQL 大数据
一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)
一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)
一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)
|
4月前
|
存储 数据挖掘 BI
离线数据仓库规范
离线数据仓库规范
|
1月前
|
存储 大数据 数据管理
数据仓库(07)数仓规范设计
所谓的规范的定义,简单理解,如果把数据当作货物,那就是货物的分类,以及对应相关的属性,比如生产日期,某个原料的含量等,我们可以把相近或者相同货物,按照一定的规律,放在一起,方便入库与出库,需要某个货物按照这些规律就可以,以比较快的速度拉取出来。 一般的规范设计包含一下几个方面:划分和定义数据域、业务过程、维度、度量 原子指标、修饰类型、修饰词、时间周期、派生指标。
180 0
|
存储 canal 消息中间件
数据仓库系列(三)数仓分层的意义价值及如何设计数据分层
数据仓库系列(三)数仓分层的意义价值及如何设计数据分层
1315 0
数据仓库系列(三)数仓分层的意义价值及如何设计数据分层
|
存储 SQL 数据采集
数据仓库建设规范
数据仓库层是我们在做数据仓库时要核心设计的一层,在这里,从 ODS 层中获 得的数据按照主题建立各种数据模型。DW 层又细分为 DWD (Data Warehouse Detail) 层、DWM (Data WareHouse Middle) 层和 DWS (Data WareHouse Servce) 层。
数据仓库建设规范
|
数据采集 监控 Android开发
网站流量日志分析--数仓设计--本项目中数据仓库的设计(星型模型)|学习笔记
快速学习网站流量日志分析--数仓设计--本项目中数据仓库的设计(星型模型)
362 0
网站流量日志分析--数仓设计--本项目中数据仓库的设计(星型模型)|学习笔记
|
数据采集 SQL 监控
浅谈数据仓库质量管理规范
浅谈数据仓库质量管理规范
192 0
|
存储 大数据 BI
聊聊数据仓库中维度表设计的二三事
聊聊数据仓库中维度表设计的二三事
738 0
聊聊数据仓库中维度表设计的二三事
|
存储 数据挖掘 BI
数据仓库系列(四)数仓架构以及多维数据模型的设计2
数据仓库系列(四)数仓架构以及多维数据模型的设计2
475 0
数据仓库系列(四)数仓架构以及多维数据模型的设计2