其他
企业如何做好数据仓库命名规范
DWD层(数仓明细层):存储从ODS层中抽取的经过数据清洗和加工后的数据,通常为与业务相关的明细数据。 DWM层(数仓中间层):将DWD层数据进行聚合汇总,生成更高层次的数据集合。这层通常包括多个维度,如时间、地域、产品、客户等。 DWS层(数仓汇总层):根据用户需求提供多样化的数据服务,如报表、可视化分析等。
采用小写字母和下划线的命名方式,禁止使用特殊字符和空格。 表名应该简洁明了、有意义,并真实反映表所存储的内容和业务领域;表名应该为名词或名词短语,禁止使用动词,避免出现英文单词和汉语拼音混用的局面。 尽量缩短表名,但是不应该过于简略,最好不要超过32个字符。 对于包含多个单词的表名,可以使用下划线"_"进行分隔,例如:order_item。 在数仓中,通常会存在多种类型的表,如事实表、维度表、临时表、中间表等,建议在表名中包含类别前缀,如temp_order,dim_product等,以便对不同表进行分类管理。 避免使用缩写,因为缩写可能会产生歧义或混淆。 数据域、主题域命名统一管理缩略词请统一参考【字典库】。
表名规范:ods_来源类型[业务|系统]_业务表名_装载策略_装载周期
表名示例:ods.ods_db_logs_gold_logs_i_d
规范说明: - 存储库名:ods - 来源类型:区分不同来源及系统,含结构化、半结构及非结构化数据。 -- 类型分类:DataBase(db)、Http(api)、Rsync Log(rsync)、MQ(topicName)、hive(layerName)。 - 项目编码:参考业务对应的编码对照库,注:一般指业务系统简称编码 - 业务表名:与数据来源系统一致,以避免造成其二义性。有分表则去除分表规则,目标添加source_table字段区分来源表名。 - 装载策略:增量(i)、全量(f)、快照(s)、 拉链(h)、 - 装载周期:根据实际装载周期确定。实时(rt)、小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)、一次性任务(o)、无周期(n)
表名规范:dwd_一级数据域_二级数据域[_业务过程]_业务描述_装载策略_装载周期
表名示例:dwd.dwd_log_app_click_info_i_d
规范说明: - 存储库名:dwd - 一级数据域:用户域、内容域、日志域、财务域、互动域、服务域等等 - 二级数据域:移动端、Web端、会员、金币等等,统一定义 - 业务过程:曝光、浏览、点击、注册、登录、注销等等,统一定义 - 业务描述:描述业务内容 - 装载策略:增量(i)、全量(f)、快照(s)、 拉链(h) - 装载周期:根据实际装载周期确定。实时(rt)、小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)、一次性任务(o)、无周期(n)
表名规范:dws_一级数据域_二级数据域_数据粒度_业务描述_统计周期
表名示例:dws.dws_log_mbr_event_info_1d
规范说明:
存储库名:dws
一级数据域:用户域、内容域、日志域、财务域、互动域、服务域等等
二级数据域:流量、渠道、会员、留存、事件等等
数据粒度:描述业务数据粒度
业务描述:描述业务内容
统计周期:统计实际周期范围,缺省情况下,离线计算应该包括最近一天(_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)。
表名规范:app_应用类型_业务主题_业务描述_统计周期_装载周期
表名示例:app.app_rpt_channel_user_1d_d
规范说明:
存储库名:app
应用类型:固定报表、分析报表、标签系统、用户画像、数据接口
业务主题:看板、驾驶仓、ROI、渠道分析、漏斗分析、留存分析、活跃分析等等
业务描述:描述业务内容
统计周期:统计实际周期范围,缺省情况下,离线计算应该包括最近一天(_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_pub_city_lvl、dim_pub_chl_i_h
规范说明: - 存储库名:dim - 应用类型:公共、自定义 - 业务主题:渠道、版本、产品、城市等等 - 业务描述:描述业务内容 - 层级 :层级(lvl) - 装载策略:增量(i)、全量(f)、快照(s)、 拉链(h) - 装载周期:根据实际装载周期确定。实时(rt)、小时(h)、天(d)、周(w)、月(m)、季(q)、年(y)、一次性任务(o)、无周期(n)
表名规范:temp_目标表名_((数据日期[_数据小时])|(开始日期_结束日期))
表名示例:temp.temp_dwd_log_app_click_info_i_d_20210311(会话表)、temp.temp_username_test_20210311_20210321 (临时表)
规范说明: - 存储库名:temp - 目标表名: 会话表:目标表名
临时表:业务描述 - 数据日期:ETL跑批日期 、ETL数据处理日期 - 数据小时:ETL跑批小时 、ETL数据处理小时 - 开始日期:临时表有效开始日期 - 结束日期:临时表有效结束日期
命名全部采用小写、字母和数字构成,且只能以字母开头,并且尽量避免使用数字;不允许使用除数字、字母、下划线之外的特殊字符。 命名应采用能够准确反映其中文含义的英文单词或英文单词缩写构成,避免出现英文单词和汉语拼音混用的局面,尽量达到见字知意效果。 命名长度尽量控制在32个字符以内,特殊字段除外。 名称的各部分之间以下划线"_"连接。 实体名称作为前缀。 字段属性的名称尽量保留实体的名称作为前缀,比如"channel_id/渠道编号"。 对于数字类型的字段,应该使用合适的精度和小数位数进行定义,并在字段名中加上相应的单位名称,例如 amount_usd、quantity_kg。 对于表中常用字段,如创建时间、更新时间等,建议采用标准的字段名,例如 created_at、updated_at。
定义度量标准:定义每个指标的计算方法和公式,以保证所有人对指标的解释和计算方式达成一致。例如,销售额=销售数量*销售单价。 确定数据源:明确每个指标的数据来源,并对数据的准确性进行验证和验证过程进行说明。例如,销售数量来自订单表,销售单价来自价格表。 设定计算周期:确定每个指标计算的时间点和时间范围,以保证指标的时效性和可比性。例如,月度销售额需要在每月末算出。 选择计算精度:根据业务需求和数据特点,确定指标计算的精度和取舍原则。例如,保留两位小数或者四舍五入取整。 标准化指标名称:使用简洁明了、具有意义的指标名称,并与业务术语相一致,以便于理解和识别。 编写指标说明:编写指标说明文档,详细阐述每个指标的含义、计算方法、数据来源、计算周期等信息,以方便用户查询和理解。
使用简洁的名称:索引名称应该简单、易于理解、与索引所涉及的列相关,并且具有描述性,可以从名称中快速获得该索引执行的目的和过程。 加上前缀:在命名索引时,可以通过添加前缀对其进行分类或归类。例如,可以使用“idx_”前缀表示索引,“uniq_”前缀表示唯一索引,“fk_”前缀表示外键等,以便于快速区分和查找。 包含列名和表名:索引名称通常应包含所涉及的列名和表名,以便于开发人员快速识别该索引所属的表和所涉及的列。例如,idx_employee_id。 使用驼峰命名法:推荐使用驼峰命名法来命名索引。例如,idx_employee_id。 避免使用特殊字符和空格:建议尽量避免使用特殊字符和空格,因为这些可能会导致问题,例如对SQL语句的解析产生影响。
使用简洁明了、具有意义的名称:ETL作业名称应该简短、具有描述性,可以从名称中快速获得该作业执行的目的和过程。 加上前缀:在命名ETL作业时,可以通过添加前缀对其进行分类或归类。例如,可以使用“load_”前缀表示加载作业,“extract_”前缀表示抽取作业,“transform_”前缀表示转换作业等,以便于快速区分和查找。 按层次结构命名:数据仓库通常采用星型或雪花型模式来组织数据。建议按照模式的层次结构来对ETL作业进行命名,以便于理解和识别。 加上时间戳:为了避免出现不同版本的作业混淆或者错误覆盖,可以在作业名称末尾加上时间戳。这样可以追踪每个作业的时间和版本,方便问题追溯和审计。 避免使用特殊字符和空格:命名ETL作业时应尽量避免使用特殊字符和空格,因为这些可能会导致一些问题,例如文件系统不支持特殊字符、SQL语句错误等。
扩展阅读:
讲述企业架构与业务架构、应用架构、数据架构、技术架构之间的关系
点击左下角“阅读原文”获取更多文章,如果您想及时收到推送,麻烦右下角点个在看或者把本号置顶!