小白篇(十七):大数据数仓常规-规范
获取原文
简短介绍
大家好,了解了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 |
|
邮箱 |
|
|
手机号 |
mobile |
|
性别 |
sex |
|
身份证号 |
identityno |
|
出生日期 |
birthday |
|
联系人 |
linkman |
|
微信 |
weixin |
|
页面 |
page |
|
事件 |
event |
|
过滤 |
filter |
|
财务 |
finance |
|
发票号、单据号 |
billno |
|
文件 |
file |
|
注意: ★如果缺少定义的关键词可以添加 |
02-小结
通过对数仓建设中,常规数据开发规范的了解。是不是觉得很清晰易懂了呢?在我们实际工作中如果严格遵守开发规范。就算数仓在庞大也是很容易维护。所以各位小伙伴可以多多了解数仓开发规范方面的知识。这些都是很重要的哦^_^。
小白篇(十七):大数据数仓常规-规范相关推荐
- 【大数据数仓项目集群配置 一】
本文用于记录我的第一次内网大数据集群配置过程. 本篇主要实现基础配置. 配置使用的软件版本和脚本参考自尚硅谷,链接如下: 链接: https://www.bilibili.com/video/BV1r ...
- Python+大数据-数仓实战之滴滴出行(二)
Python+大数据-数仓实战之滴滴出行(二) 1. 数据转移 #验证sqoop是否工作 /export/server/sqoop-1.4.7/bin/sqoop list-databases \ - ...
- 大数据数仓建模(3)
大数据数仓建模(3) 2.2.6 人员配置参考 1.旁敲侧击的问你到底做过没有 2.你们大概规模,数据量 1整体架构 属于研发部/技术部/数据部/基础平台部,我们属于大数据组,其他还有后端项目组,前端 ...
- 大数据/数仓面试灵魂30问
1.什么是数据仓库?如何构建数据仓库?(如果这个问题回答的好,后面很多问题都不需要再问) 2.如何建设数据中台?可简单说下理解与思路 3.数据仓库.数据中台.数据湖的理解 4.传统数仓的程度(建模工具 ...
- 大数据/数仓面试灵魂30问(转)
1.什么是数据仓库?如何构建数据仓库?(如果这个问题回答的好,后面很多问题都不需要再问) 2.如何建设数据中台?可简单说下理解与思路 3.数据仓库.数据中台.数据湖的理解 4.传统数仓的程度(建模工具 ...
- Python + 大数据 - 数仓实战之智能电商分析平台
Python + 大数据 - 数仓实战之智能电商分析平台 1. 项目架构 2. 数据仓库维度模型设计-事实表 事实表的特征:表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一 ...
- Python+大数据-数仓实战之滴滴出行(一)
Python+大数据-数仓实战之滴滴出行(一) 1. 项目架构图 1.1 数据流程处理 1.2 数仓分层 1.3 创建数据库 在Hive中创建数据库-- 创建ods库 create database ...
- 大数据数仓高级面试题整理
大家好,给大家整理了一下大数据数仓高级面试题,希望大侠们能够喜欢. 数仓高内聚低耦合是怎么做的 定义 高内聚:强调模块内部的相对独立性,要求模块内部的元素尽可能的完成一个功能,不混杂其他功能,从而使模 ...
- 数据查询和业务流分开_传统数仓和大数据数仓的区别是什么?
概念与容器 为什么先说这个,其实很简单:因为绝大多数人都把这两个概念混为一谈.然后就会出现各种各样的问题:oracle不是数据库么,怎么又是数据仓库?Hive不是数据仓库么?怎么又是数据库? 数据仓库 ...
最新文章
- 学点Webpack吧
- C#中DataGrid控件的基本使用
- 刚发现博客园又遇到了问题
- BZOJ 1412 狼和羊的故事
- mysql数据库项目例子_很实用的MySql数据库语句(项目中的例子)
- PHP error:ERROR: No pool defined. at least one pool section must be specified in config file
- STM32很难?这些工具可以帮大忙!
- 理财平台频繁暴雷,羊毛党该要本金还是撸利息?
- 开源项目管理软件禅道使用帮助下载
- php字符串怎么传到html_php字符串函数(四):html与字符串之间的转换
- [转载] Java获取泛型T的类型 T.class
- Kalman Filter : 理解卡尔曼滤波的三重境界
- Mysql 版本号、存储引擎、索引查询
- arcgis中dem坐标定义_ArcGIS中的地理坐标系转换方法参数(二) | 学步园
- 给pmbus添加mfr_id, mfr_version, mfr_model节点显示
- Excel如何在表格内打勾
- 光量子计算机技术突破,真正突破光刻机封锁的技术诞生了!可编程光量子计算芯片是什么?...
- 谈谈自己关于阅读源码的一点鄙见
- WIFI基础入门--802.11--成帧细节(管理帧)--5
- 学校计算机工作室制度,邵鹏飞计算机工作室2019-2020学年工作计划
热门文章
- 路径规划与避障算法(六)---DWA算法流程之二---自行车模型与路径采样空间
- 计算机内部的线路能承受多高的温度,揭秘:CPU到了120°会不会坏?它到底能承受多高的温度...
- WEB打印控件---无限制完全免费版
- [创业-17]:财务报表之综述
- OCR实时翻译软件 Bob 0.5.0.beta3 Mac中文版
- 新手搭建网页web项目:包括服务器搭建、后台、前端、交互
- kernel32 ntdll
- Keil MDK打开代码折叠功能(代码折叠按钮消失的解决办法)
- Anaconda 使用简介
- 抖音获取在线主播房间号和抖音号,再获取抖音主播在线观看用户信息