我的原文地址:

https://mp.weixin.qq.com/s?__biz=MzIxMzg5NzI4OQ==&tempkey=MTA4Nl9qSTNuZGovbUNLNEFvaXU2bndmR2lYX2ZNanlYQ1VrM2VjbFVDN2VhZS0xMDBUZXVHNVVPLVg0THRYTGJJSWNzeVlUQmUtZkpPbHZqaGpaSWpRM1dnT0lGUDBKZ2w5SHZwZkVLTE5ubUdwZlB4SDlwT0hnc3hxZHpJNW85QkVZTFc1UVZuei1IcHl0eGNSY0pUQ0FGaTR3QmJhM0R0TloxcG9oOHpBfn4%3D&chksm=17ae9ada20d913cc07d695b45c1754c49d0089903998eb02a69383c535889b37ae5f10a5f4be#rd

 

简短介绍


大家好,了解了Hue、hive、sqoop、kylin、shell等等一系列工具知识之后,是不是对于大数据的开发有了一定的认知了呢?那么今天分享下常规数仓开发规范。都是比较通用的,无论在哪个公司都会有类似的一套规范。

 

01-数仓开发常规-规范

  • 1、规范目的

一般数仓开发规范,都是为了能够很好的规范集群中数据库的内容而制定的。在数仓中往往存在大量的表和字段。为了使数据开发者通过表名一眼就能识别出表是做什么用的,并且里面存放的是什么类型的数据,从而制定的规范。(^_^ 是不是很神奇呢?你也可以的)

 

  • 2、数据分层设计规范

2.1、大数据中数据分层,通常是集群中创建单独的数据库来实现的。我们数仓通常会分为四层:原始数据层、清洗层、模型层、应用层。当然还有一些带有开发测试属性的层,例如:开发层、公共层、临时层。

数据库命名说明(仅供参考和学习)

层次描述

层次简写

数据库名

举例说明

基础数据层

STG

STG

统一选用parquet文件格式做存储

清洗整合层

ODS

ODS

统一选用parquet文件格式做存储 对数据进行整合、码表进行规范、空值进行处理

数据仓库层

DW

DW

统一选用parquet文件格式做存储 最好分区(默认15天)

数据应用层

DM

DM

统一选用parquet文件格式做存储 最好分区(默认15天)

数据公共层

PUB

PUB

统一选用parquet文件格式做存储 公共数据库(用存储维度相关信息便于权限管理)

清洗临时层

TMP

TMP

统一选用parquet文件格式做存储 调度中间临时库,用做作业临时表存储

开发测试层

DEV

DEV

统一选用parquet文件格式做存储 开发测试临时库

注意:

STG  创建表默认 业务类型_来源库名_表名_(增量:inc) 字段默认为string 类型

ODS  创建表默认ODS_模型表名_(增量:inc ) 字段严格按照模型字段类型

DW   创建表默认DW_主题_业务内容

DM   创建表默认DM_主题_业务内容

TMP  创建表默认目标表_(编号00-99)

RPT  创建表默认RPT_部门简称(公有-pub)_业务内容_(日期表-ds/ws/ms/qs/ys)

 

2.2、数据流向

通常STG原始层保持与业务源一样的结构和数据,之后通过sql将数据做清洗整合存入ODS层,再将ODS层数据相互关联提炼成模型放入DW层,最终报表和数据支撑通过查询DW数据可落入DM应用层做结果展示。简单理解数据流向为:stg-> ods -> dw -> dm

小白篇(十七):大数据数仓常规-规范

 

  • 3、数据对象设计规范

3.1、表命名规范

l STG层(原始层 分全量分区表及全量不分区表)

Ø全量不分区表{业务简称}_{库名简称}_{表名}。

Ø全量分区表 {业务简称}_{库名简称}_{表名}_pt。

 

l ODS层(中间表层 每个分区都是全量数据)

Ø表名(ods)_业务整合表_(inc增量)_(分区表ds)。

 

l PUB(数据公共层)

Ø表名(维度表dim)_业务内容表_(历史表His)。

 

l DW层(模型层 每个分区都是全量数据)

Ø表名按(事实_fact、维度_dim)_主题_业务数据_统计内容_(增量 inc)(分区表ds)。

Ø按天周月份季度年度统计的表后缀 天_ds周_ws 月份_ms 季度_qs 年度_ys

 

l DM层(应用层)

Ø 表名按_应用(报表rpt 标签系统 lbl)_业务数据_统计内容_(增量 inc)(分区表ds)。

Ø 按天周月份季度年度统计的表后缀 天_ds周_ws 月份_ms 季度_qs 年度_ys

 

 

3.2、字段命名规范

l 由大小写字母,下划线,数字组成,以字母开头,不包含中文和特殊字符

l 使用富有意义的英文词汇,参照常用字段关键词说明,过长单词使用缩写

l 统计字段,后缀

金额 _amt

次数 _cnt

人数 _num

l 日期字段,后缀

日期(不带时分秒) _dt

日期(带时分秒)   _time

        分区日期默认dt

l ods\dw层日期  默认string类型(yyyyMMdd)

l dm层日期  默认日期类型(yyyy-MM-dd)

 

 

3.3、字段类型规范

l 字符型使用STRING类型

l 非整型数值型使用DECIMAL类型,使用DECIMAL型时必须指定长度和精度

l 最大值10位及以上的整数使用BIGINT

l 最大值在3-9位的整数使用INT

l 最小粒度在天的日期型使用DATE类型

l 最小粒度在小时及以下的日期型使用TIMESTAMP类型

 

3.4、敏感字段脱敏规范

数仓中带有如下字段的表都需要进行脱敏处理。敏感字段包含:

l 姓名

l 手机号

l 身份证号

l 银行卡号

l 详细地址

 

3.5、空值处理规范(在进入清洗整合层时需要标准化)

缺省值定义说明(仅供参考和学习)

字段类型

空值替换值

STRING

‘’

DECIMAL

0

FLOAT

0

DOUBLE

0

INT

0

BIGINT

0

DATE

1900-01-01

TIMESTAMP

1900-01-01 00:00:00.000

注意:

 ★如果缺少定义的字段类型可以添加

 

3.6、通用字段名称定义

字段关键词说明(仅供参考和学习)

关键词描述

关键词

说明

id

id

 

名称

name

 

描述、详情

desc

 

会员

member

 

产品

product

车、房、保险、信用卡

订单流水号

serialid

固定组合

资源

resource

 

平台

plat

 

设备

device

 

会话

session

 

用户

user

 

城市

city

 

province

 

区域

arearegion

如华南区域、华东区域

county

town

 

continent

 

国家

country

 

国际

inter

 

日期

createdate

 

时间

createtime

 

创建

create

 

更新

update

 

消费

consume

 

出行

travel

 

回团

return

 

订单

order

 

乘客

passenger

 

保险

insurance

 

支付

pay

 

支付方式

payment

 

ticket

 

金额

amount

 

价格

price

 

营收

revenue

如marketrevenue

时长

market

 

总营收

totaltakeoff

固定组合

GMV

GMV

 

标识

flag

 

状态

status

 

测试

test

 

是否

is

0为否,1为是

有效

valid

 

开始

start

 

结束

end

 

经度

lon

 

纬度

lat

 

体系、系统

sys

 

注册

reg

 

等级

level

 

类型

type

 

点评

comment

 

红包

coupon

 

投诉

complain

 

邮箱

email

 

手机号

mobile

 

性别

sex

 

身份证号

identityno

 

出生日期

birthday

 

联系人

linkman

 

微信

weixin

 

页面

page

 

事件

event

 

过滤

filter

 

财务

finance

 

发票号、单据号

billno

 

文件

file

 

注意:

 ★如果缺少定义的关键词可以添加

 

02-小结

通过对数仓建设中,常规数据开发规范的了解。是不是觉得很清晰易懂了呢?在我们实际工作中如果严格遵守开发规范。就算数仓在庞大也是很容易维护。所以各位小伙伴可以多多了解数仓开发规范方面的知识。这些都是很重要的哦^_^。

相关文章:

  • 2021-09-07
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2022-12-23
  • 2021-09-10
  • 2021-10-11
  • 2022-01-09
猜你喜欢
  • 2021-12-19
  • 2021-11-22
  • 2021-05-24
  • 2022-12-23
  • 2021-04-25
相关资源
相似解决方案