目录

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

二、设计规范 - 指标

三、命名规范 - 表命名

3.1 常规表

3.2 中间表

3.3 临时表

3.4 维度表

四、开发规范

五、流程规范


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

无规矩、不方圆。规范设计是在具体开发工作之前制定的,过程中不断进行完善。目的在于约束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语句有没有进行空字符串处理

五、流程规范

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

  1. 需求阶段:数据产品经理应如何应对不断变化的业务需求。
  2. 设计阶段:数据产品经理、数据开发者应如何综合性能、成本、效率、质量等因素,更好地组织与存储数据。
  3. 开发阶段:数据研发者如何高效、规范地进行编码工作。
  4. 测试阶段:测试人员应如何准确地暴露代码问题与项目风险,提升产出质量。
  5. 发布阶段:如何将具备发布条件的程序平稳地发布到线上稳定产出。
  6. 运维阶段:运维人员应如何保障数据产出的时效性和稳定性。

数仓系列传送门:https://blog.csdn.net/weixin_39032019/category_8871528.html

一篇文章搞懂数据仓库:数据仓库规范设计相关推荐

  1. c++ 计算正弦的近似值_一篇文章搞懂正弦保真性

    本文介绍数字信号处理中"正弦保真性"这一概念,想要更好地理解本文所述内容,建议读者先阅读<一篇文章搞懂卷积>. 正弦保真性定义 一个正弦信号作为线性时不变系统的输入时, ...

  2. 一篇文章搞懂filebeat(ELK)

    一篇文章搞懂filebeat(ELK) https://www.cnblogs.com/zsql/p/13137833.html 目录 一.filebeat是什么 1.1.filebeat和beats ...

  3. 一篇文章搞懂数据仓库:数据仓库架构-Lambda和Kappa对比

    在介绍Lambda和Kappa架构之前,我们先回顾一下数据仓库的发展历程: 传送门-数据仓库发展历程 写在前面 咳,随着数据量的暴增和数据实时性要求越来越高,以及大数据技术的发展驱动企业不断升级迭代, ...

  4. 一篇文章搞懂架构师的核心技能

    " 这是架构师系列的第一篇:核心技能,希望这个系列能完全揭示架构师这个职位:我先从核心技能开始,后续还有架构师之路,架构实战等架构师系列文章. 本文作者 陈睿 优知学院创始人,前携程定制旅游 ...

  5. 【一篇文章搞懂】什么是分布式锁?为什么要用分布式锁?看这篇文章准没错!

    简介 HikariCP 是用于创建和管理连接,利用"池"的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制.连接可靠性测试.连接泄露控制.缓存语句等功能,另外,和 dr ...

  6. reactrouter监听路由变化_一篇文章搞懂前端路由原理解析和实现方式

    在单页应用如此流行的今天,曾经令人惊叹的前端路由已经成为各大框架的基础标配,每个框架都提供了强大的路由功能,导致路由实现变的复杂. 想要搞懂路由内部实现还是有些困难的,但是如果只想了解路由实现基本原理 ...

  7. 一篇文章搞懂STL中的空间配置器allocator(原创,多图,易懂)

    Table of Contents 0.引入 1.标准的空间配置器allocator 2.更为高效的空间配置器alloc 2.1----对象的构造与析构 2.1.1 对象的构造:::construct ...

  8. 一篇文章搞懂算法基础

    源码地址 https://github.com/javanan/DataStructure 目录 时间复杂度介绍 空间复杂度介绍 递归算法与非递归算法区别和转换 折半查找/二分查找算法 链表实现 反转 ...

  9. 组件化开发实战_一篇文章搞懂什么是前端“组件化”开发

    学过网页的朋友都知道,制作一个网页离不开HTML.CSS和JavaScript技术.对于初学者来来说,掌握这3门技术就已经很不容易了,为什么前端为什么又要搞出来一个"组件化"开发的 ...

最新文章

  1. 梯度下降与delta法则
  2. 新!详细!win10下MySQL数据库干净卸载安装与配置
  3. python默认数据转换_Python_数据类型转换
  4. 佳能g2800清零软件天空_可能是史上最有趣的3D建模软件
  5. python 代码_如何让Python代码加速运行?
  6. 大数据的分析手段有哪几种
  7. 针对云原生转型的6个关键数据策略
  8. eureka集群的两种配置方式:配置文件方式与DNS方式
  9. 迅为iTOP-IMX6ULL开发板Pinctrl和GPIO子系统实验-修改设备树文件
  10. python怎样计算增长率_增长率如何计算
  11. Excel数据分析从入门到精通(十一)28个图表之结构分析
  12. §1.1自然数 上•序数理论
  13. ios系统铃声调用方法
  14. 评价最高影片JAVAlibrary_《鼠胆英雄》:影片烂不烂,观众说了算
  15. Echo,Linux上最忧伤的命令(故事)
  16. 2021年最受数据分析师欢迎的副业排行榜TOP1
  17. 欢迎中文社区新版主@黄念刚
  18. dataframe排序 pd.rank()
  19. 基于VOIP的SIP协议分析
  20. 阿姆斯特朗数python

热门文章

  1. 线性代数不深入,机器学习两行泪!
  2. 【社招/实习】百度大搜索招聘NLP、搜索方向算法工程师!
  3. 神经网络激活函数=生物转换器?
  4. 修改安装路径 pip 以及修改运行路径
  5. 玩转算法之面试第九章-动态规划
  6. 统计学-自然语言处理
  7. 李宏毅2020深度学习-判别方法和生成方法
  8. JSP和HTML中实现字符串换行
  9. 请求转发与重定向的区别和执行流程
  10. Lodop打印设计界面生成代码带”...(省略)”