数据仓库命名规范:简洁、一致、可扩展
数仓开发命名规范主要分为以下几个方面
(1)数据仓库命名规范
(2)表命名规范
(3)字段命名规范
(4)字段类型规范
数据仓库命名规范
库命名 | 库描述 | 数仓层命名 | 命名备注 |
---|---|---|---|
ods | 数据操作存储层/贴源层 | ods | ods_开头 |
dwd | 数据明细层 | dwd | dwd_开头 |
dws | 数据汇总层 | dws | dws_开头 |
ads/dm | 数据应用层 | ads/dm | ads/dm_开头 |
dim | 统一维度层 | dim | dim_开头 |
temp | 临时数据处理层 | temp | temp_开头 |
表命名规范
- 命名全部采用小写字母和数字构成,只能以字母开头,并且尽量避免使用数字。
- 命名应采用能够准确反映其中文含义的英文单词或英文单词或中文缩写构成,避免出现英文单词和汉语拼音混用的局面。
- 命名长度尽量控制在30个字符以内,考虑可读性、易懂性、规范性;如果超过30个字符,尽量把长单词转换成缩略词。
- 名称的各部分之间以"_"(下划线)拼接。
- 数据域、主题域命名统一管理
ODS层表命名规范:
表名规范:ods_来源类型[业务|系统]_业务表名_装载策略_装载周期
表名示例:ods.ods_his_surgery_info_i_d
规范说明:
-- 存储库名(分层前缀):ods
-- 来源类型(业务域|系统名):区分不同来源及系统,含结构化、半结构及非结构化数据。如HIS系统,AIMS手麻系统,PACS影像中心等。
-- 业务表名:与数据来源系统一致,以避免造成其二义性。有分表则去除分表规则,目标添加source_table字段区分来源表名。
-- 装载策略:增量(i)、全量(a)、快照(s)、 拉链(h)、
-- 装载周期:根据实际装载周期确定。实时(rt)、小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)、一次性任务(o)、无周期(n)
DWD层表命名规范:
表名规范:dwd_一级数据域_二级数据域[_业务过程]_业务描述_装载策略_装载周期
表名示例:dwd.dwd_cdr_surgery_record_i_d
规范说明:
-- 存储库名(分层前缀):dwd
-- 一级数据域:临床数据、运营数据、科研数据等等
-- 二级数据域(若没有可直接到业务过程):手术、用户、耗材、护理、门诊、住院等等
-- 业务过程:入院、出院、检查、检验等等,统一定义
-- 业务描述:描述业务内容(手术记录)
-- 装载策略:增量(i)、全量(a)、快照(s)、 拉链(h)
-- 装载周期:根据实际装载周期确定。实时(rt)、小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)、一次性任务(o)、无周期(n)
DWS层表命名规范:
表名规范:dws_一级数据域_二级数据域_数据粒度_业务描述_统计周期_装载周期
表名示例:dws.dws_cdr_hos_person_cnt_1d_d(最近一天的住院人次数量)
dws.dws_cdr_hos_person_cnt_cd_d (当天的住院人次数量)
dws.dws_cdr_hos_person_cnt_cm_m (当月的住院人次数量,按月分区)
规范说明:
-- 存储库名(分层前缀):dws
-- 一级数据域:临床数据、运营数据、科研数据等等
-- 二级数据域:手术、门诊、住院、费用等等
-- 数据粒度:描述业务数据粒度
-- 业务描述:描述业务内容
-- 统计周期:统计实际周期范围,缺省情况下,离线计算应该包括最近一天(_1[h|d|w|m|q|y]),最近N天(_n[h|d|w|m|q|y])和历史截至当天(_t[h|d|w|m|q|y])三个表。当前周期如当天,当月(_c[h|d|w|m|q|y])。小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)。
-- 装载周期:根据实际装载周期确定。实时(rt)、小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)、一次性任务(o)、无周期(n)
ADS层表命名规范:
表名规范:ads_应用类型_业务主题_业务描述_统计周期_装载周期
表名示例:ads.ads_bi_channel_user_1d_d
规范说明:
-- 存储库名:ads
-- 应用类型:固定报表、分析报表、标签系统、用户画像、数据接口
-- 业务主题:看板、驾驶仓、三级绩效、二级绩效等等
-- 业务描述:描述业务内容
-- 统计周期:统计实际周期范围,缺省情况下,离线计算应该包括最近一天(_1[h|d|w|m|q|y]),最近N天(_n[h|d|w|m|q|y])和历史截至当天(_t[h|d|w|m|q|y])三个表。小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)。
-- 装载周期:根据实际装载周期确定。实时(rt)、小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)、一次性任务(o)、无周期(n)
DIM层表命名规范:
表名规范:dim_业务主题_业务描述_[装载策略_装载周期]
表名示例:dim.dim_cdr_surgery_level_a_d、dim_odr_org_info_s_d
规范说明:
- 存储库名:dim
- 业务主题:临床数据、产品等等
- 业务描述:手术级别、组织机构信息等
- 装载策略:增量(i)、全量(f)、快照(s)、 拉链(h)
- 装载周期:根据实际装载周期确定。实时(rt)、小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)、一次性任务(o)、无周期(n)
TEMP层表命名规范:
表名规范:temp_目标表名_((数据日期[_数据小时])|(开始日期_结束日期))
表名示例:temp.temp_dwd_log_app_click_info_i_d_20210311(会话表)、temp.temp_username_test_20210311_20210321 (临时表)
规范说明:
- 存储库名:temp
- 目标表名: 会话表:目标表名,临时表:业务描述
- 数据日期:ETL跑批日期 、ETL数据处理日期
- 数据小时:ETL跑批小时 、ETL数据处理小时
- 开始日期:临时表有效开始日期
- 结束日期:临时表有效结束日期
字段命名规范
通用规范:
命名全部采用小写、字母和数字构成,且只能以字母开头,并且尽量避免使用数字;
不允许使用除数字、字母、下划线之外的特殊字符 命名应采用能够准确反映其中文含义的英文单词或英文单词缩写构成,避免出现英文单词和汉语拼音混用的局面,尽量达到见字知意效果。
其他:
【禁止】禁止使用关键字,如desc、from、select、left、join、time等 等,请参考Hive官方保留字。
【禁止】禁止缩写英文单词的首字母的元音
【强制】表名、字段名必须使用小写字母或数字,必须以字母开头,禁止使用除数字、字母、下划线之外的特殊字符,禁止两个下划线中间只出现数字。
正例:create_time,create_name
反例:ctime,cname
字段约束
字段命名优先使用词根中已有关键字(数仓标准配置中的词根管理),定期 Review 新增命名的不合理性。
- 词根的设计-指标规范:
基础词根 | 字段类型 | 词根 | 样例 | 样例中文 |
---|---|---|---|---|
数量 | int/bigint | cnt | person_cnt | 人员数量 |
金额/费用 | decimal(8,2)/decimal(18,4) | amt | hos_amt | 住院费用 |
比例/占比/比率 | double/decimal(8,2) | rate | out_hos_rate | 出院率 |
日期类型 | 词根 |
---|---|
小时 | h |
天 | d |
周 | w |
月 | m |
季 | q |
年 | y |
聚合类型 | 词根 | 备注 | 样例 | 样例中文 |
---|---|---|---|---|
累加/求和 | td | 按周累加/求和/累计 | hos_cnt_wtd | 周出院人数 |
平均 | avg | 按天/周/月/年平均 | host_cnt_wavg | 周平均出院人数 |
字段类型规范
长度一般不能超过25个字符长度。如无特殊需要,只允许使用以下几种字段类型。
类型 | 释义 | 场景举例 | 备注 |
---|---|---|---|
string | 字符串类型 | 名字、评论、地址 | |
bigint | 整形类型 | 人数、人次数、数量、人均数量 | |
double | 浮点型类型 | 比例、比率、占比 | |
decimal | 高精度浮点型类型 | 金额、费用、人均费用 | 推荐精度(18,4) |
复合类型 | 复合类型 | map,array |