数据中台-实施篇:数据接⼊相关规范
xxx数据接⼊相关规范
1    ⽂件内容规范
每个EXECL保留⼀个SHEET页。
注:⽬前解析程序只解析第⼀个sheet页。如果与其他sheet页关联可能将导致数据不准确风险。
1.1  HDFS⽬录规范
1.1.1 ⽂件命名规范
数据⽂件名称为⾃定义数据表⽂件名称,要有实在意义,取名简单,遵守企业命名规范,hdfs
⽂件命名和ftp缓存服务器英⽂件命名保持⼀致。
规范:  数据⽂件命名构成为:  8位⽇期数字_原表英⽂名称-批次号(3位数值).后缀名
注明:
1. 8位⽇期数字: 前⼋位⽇期⽤来确认数据分区。
2. 原表英⽂名称:描述实体业务源数据表英⽂简称。
3. 批次号:⽤来描述数据⽂件存储上传的次数顺序,规定3位有效数值位(如:001)。
4. 后缀名:主要由业务和数据团队视⾓协商来⾃定义即可,描述ftp缓存层源数类型(如xlsx、xlsb), hdfs⽬录⽂件类型统⼀为csv格式。
5. 8位⽇期数字与原表英⽂名称使⽤下划线链接, 原表英⽂名称、批次号之间是有中划线链接。
例如
ftp⽂件名:
8位⽇期数字_原表英⽂名称-批次号.后缀名
20190831-packing_list-001.xlsx
Hdfs⽂件名:
20190831-packing_list-001.csv
1.1.2 SFTP⽬录路径规范
存储介质远程FTP本地服务器⽂件⽬录状态
⼈⼒数据/data/recv_t_dev/业务系统简称/时间/数据⽂件名⽇全量数据
1.1.3 hdfs⽬录路径规范
源数接⼊类型: i:增量(Increment)、 t:全量(Total)、 p:区间(Period)
1. 数据类型:全量数据标识字母为t,增量数据标识字母为i,区间数据标识字母为p
2. 环境类型:测试数据标识名称为dev,正式数据标识名称为pro
命名规范:  /data/recv_{数据类型}_{环境类型}/业务系统简称/数据时间/表名称/数据⽂件
存储介质⽬录(⽣产:pro 开发:dev)状态
sftp本地⽬录/data/recv_*_环境/业务系统简称/时间/⽂件名临时⽂件存储
HDFS集⽬录/data/recv_t_pro/业务系统简称/时间/库表名/⽂件名清洗后数据⽬录(全),⽣产HDFS集⽬录/data/ftpdata_t_dev/业务系统简称/时间/库表名/⽂件名源数据接⼊(全),⽣产
ODS仓库⽬录/user/hive/warehouse/库名/表名业务库表
业务系统简称(和hive业务库名称对应):环境 _业务系统英⽂简称(3位字母位)
接⼊类型HDFS⽬录划分(⽣产:pro 开发:dev)数据层级数据周期
全量数据接⼊/data/recv_t_dev/data_hrg/20190829/表名/数据⽂件tmp层⼈⼒按⽇接⼊注:1. 上述依据⽣产环境HDFS⽬录和FTP服务器⽬录统⼀相同为例!
1. 集团⼈⼒资源英⽂业务名(简称:hrg )
特殊说明:
实例规范解析:
数据接⼊SFTP⽂件实例(财务按⽉刷⼊整⽉数据):
⽣产环境数据源⽬录:/data/recv_*_pro/data_hrg/20190829/数据
数据接⼊HDFS实例(财务按⽉刷⼊整⽉数据):
⽣产环境数据源⽬录:/data/recv_*_pro/data_hrg/20190829/表名/数据
实例1:sftp⽬录(财务按⽉刷⼊整⽉数据):
sftp⽬录: /data/recv_t_dev/data_hrg/201908/20190831-packing_list-001. xlsx
hdfs源数据⽬录: /data/ftpdata_t_dev/data_hrg/201908/packing_list /20190831-packing_list-001.csv
hdfs清洗后⽬录: /data/recv_t_dev/data_hrg/201908/packing_list /20190831-packing_list-001.csv
1.2  HIVE规范
1.2.1 数据库命名规范
在⾦博⼠平台(数据中台系统)建TMP层数据库和层数据表,都采⽤不同数据库数据。
数据库命名规则由两部分组成,命名规范:环境_库状态_业务系统英⽂简称
ac97
环境分类:pro、dev
例如(测试环部库):整理库如下(开发库为例):
数据表接⼊库级命名-登记册库名(⽣产:pro 开发:dev)序列号业务系统描述业务代码简称HIVE库名
1测试test dev_test
2集团⼈⼒数据HRG(SF) dev_hrg
1.2.2 数据表命名规范
表层级前缀命名规则
环境模型层库类型数据加⼯分类⼊库
开发环境:dev ⽣产环境:pro 贴源模型层
外部数据源(tmp层)外部表:源数据接⼊缓存层(表名规范: tmp_*  )
贴源层数据库(ODS层)
内部表:增量更新、全量刷新、初始化库、源数据⼊库
(表名规范: ods_*  )
公共模型层
明细层数据库(DWD 层)
明细整合表、明细宽表
(表名规范: dwd_*  )
轻度汇总层数据库(DWS 层)
轻度汇总数据、维度数据表、⼆次量值统计数据
(表名规范: dws_*  )
标签模型层标签层数据库(TDM 层)
前台应⽤标签数据表
(表名规范: tdm_*  )
应⽤模型层应⽤层数据库(ADM 层)
应⽤集市、场景集市、对外发布的数据表
(表名规范: adm_*  )
营销模型层数据营销层库(RDM 层)
数据应⽤多维幅度计算层监控指标
(表名规范: rdm_*  )
例如:{数据层/数据层级}_{业务系统}_{业务库}_源系统表_{表状态}{加⼯频率}{加⼯类型}
表后缀命名规则
数据表状态:
u:更新表update、  s:流⽔表stream
数据加⼯频率:
h:⼩时(hour)、d:天(day)、w:周(week)、 m:⽉(momth)、q:季度(quarter)、 y:年(year)数据加⼯类型:
i:增量(Increment)、 t:全量(Total)、 p:区间(Period)
后缀命名规范:  _{数据表状态}{数据加⼯频率}{数据加⼯类型}
数据表设计:
表后缀名描述
_*dt dt 后缀,⽇刷新、  每个分区是⼀份全量
_*di di 后缀,⽇刷新、  每个分区是⼀份增量
_*hi hi 后缀,⼩时刷新、每个分区是⼀份增量
_*wi wi 后缀,周刷新、  每个分区是⼀份增量
_*mi mi 后缀,⽉刷新、  每个分区是⼀份增量
_*qi qi 后缀,季度刷新、 每个分区是⼀份增量
_*yi yi 后缀,年度刷新、 每个分区是⼀份增量
说明:
以上未加⼊数据表状态(以上”*”代表: 数据表状态: u:更新表update、  s:流⽔表stream)。
⼀共能组合成种类数据表: 2x6*5*4*3*2x3*2=8640
源系统表重组命名规则 :
源系统名: 指源系统英⽂简称代码
源系统库名: 指源系统表所在的库英⽂简称
源系统表名: 指源系统英⽂表名
数据层_{业务系统}_{业务库}_源系统表_{表状态}{加⼯频率}{加⼯类型}
ODS_{业务系统}_{业务库}_源系统表_{表状态}{加⼯频率}{加⼯类型}
如:
ods_ {业务系统}_{业务库}_{业务表名缩写/⾃定义表命名标签缩写}_{u/s}{h/d/w/m/q/y}{i/t/p}更新表⽇增量命名取法: ods_eam_maximo_user_udi
流⽔表⽇全量命名取法: ods_eam_maximo_user_sdt
如:
ods层表名:
ods_agt_loan_app_sdi  (贷款申请信息表,贴源层、每个分区是⼀份流⽔表每⽇刷增量)
ods_agt_loan_app_udt (贷款申请信息表,贴源层、 每个分区是⼀份更新表每⽇刷全量)
CDW(DWD/DWS)/AMD层表重组命名规则 :
业务系统: 指源系统业务线英⽂简称代码
再⽣业务表:是经过多表融合后再⽣的新业务表名,要有实在含义
AMD/DWS/DWD_{业务系统}_{再⽣业务表}_{表状态}{加⼯频率}{加⼯类型}
如:
DWD_SF_ PERSONINFO_SDT
SF: 集团⼈⼒数据库是SAP云端的数据中⼼,集中在上海,统称DC15
HRG: ⼈⼒资源
PERSONINFO:员⼯基础明细数据表(员⼯表+合同表+教育表)
1.2.3 数据字段命名规范
1.1 基本原则
命名以表述实体的真实含义、⽅便辨认为⽬的,数据库表名⾸字母⼤写,能⽤⼀个单词就⽤⼀个,需要多个的则只⽤关键单词,同⼀字段名在数据库中应保持含义相同,标识这个表是什么就⾏,每个单词都采⽤单数形式,每个单词⾸字母要⼤写(除此第⼀个单词),命名规则:表名+单词或单词缩写,如 firstName,startDate,endDate。
注意点:禁⽌使⽤中⽂或拼⾳缩写进⾏命名,表名、字段名、视图名长度控制在5个单词之内,总长度⼩于30个字符。
1.2 如遇单词太长,可采⽤缩写,选择顺序如下:
a)⾸选在命名规范"常⽤缩写"中列⽰的缩写。
b)⾏业约定被⼴泛接受的缩写。
c)元⾳字母剔除法⽣成的缩写,缩写后长度应控制在5个字符以内,⼤写表⽰,但需在项⽬词汇表列⽰。
d)提取表名前4个字母,使⽤拼接后⾯有实在意义的字段名,如 userName、userPwd等。
1.3 与字段有关,默认的⼀些特殊字段, ⾮常多表中:
⽐⽅⼀些业务处理表中,除了加⼊⽣成的⾃⼰主动编号ID(⼀般作为主键⽤),该记录创建的时间CreateDate(创建时间)与updateDate(更新时间),该记录的创建⼈CreatBy (注意这⾥。没UI_ID(⽤户信息表User_Info的主键UI_ID),由于还有改动⼈),最后改动⼈LastEditBy。最后改动时间LastEditDate。(这些能够直接使⽤中⽂字符,⽽不使⽤编码,提⾼查询的效率)
  同⼀时候有的时候须要注意,删除的时候并不真的删除该记录,⽽是加⼊⼀个标识位,⽐⽅XX_DeleteStaus删除状态。1是有效的,0则是⽆效的。
列如:
-- 1、ODS层内部表
DROP TABLE IF EXISTS DEV_HRG.ODS_SAPDC15_HRG_JOBTRANSFERS_UDT;
CREATE TABLE DEV_HRG.ODS_SAPDC15_HRG_JOBTRANSFERS_UDT (
serial            string COMMENT '序号'
,empId            string COMMENT '员⼯编号'
,firstName        string COMMENT '姓名'
,startDate        string COMMENT '⽣效⽇期'