数据流向

遵循模型开发时分层结构,数据从 ods -> dw -> dm ->app 这样正向流动,可以防止因数据引用不规范而造成数据链路混乱及 SLA 时效难保障等问题,同时保证血缘关系简洁化,能够轻易追踪数据流向。 在开发时应避免以下情况出现:

  1. 数据引用链路不正确,如 ods -> dm ->app ,出现这种情况说明明细层没有完全覆盖数据;如 ods -> dw -> app ,说明轻度汇总层主题划分未覆盖全 。减少跨层引用,才能提高中间表的复用度。理想的数仓模型设
    计应当具备:数据模型可复⽤,完善且规范。
  2. 尽量避免一层的表生成当前层的表,如 dw 层表生成 dw 层表,这样会影响ETL 效率。
  3. 禁止出现反向依赖,如 dw 表依赖于 dm 表。

规范

表命名规范

  1. 对于 ods、dm、app 层表名:类型主题表含义,如:dm_xxsh_user
  2. 对于 dw 层表名:类型主题维度表含义,如:dwxxsh_fact_users
    (事实表)、dw_xxsh_dim_city(维度表)

字段命名规范
构建词根,词根是维度和指标管理的基础,划分为普通词根与专有词根

  1. 普通词根:描述事物的最小单元体,如:sex-性别。
  2. 专有词根:具备行业专属或公司内部规定的描述体,如:xxsh-公司内部对某个产品的称呼。

脚本命名规范
脚本名称:脚本类型.脚本功用.[库名].脚本名称。
如:hive.hive.dm.dm_xxsh_users
脚本类型主要分为以下三类:

  1. 常规 Hive sql:hive
  2. 自定义 shell 脚本:sh
  3. 自定义 Python 脚本:python

脚本内容规范

#变量的定义要符合 python 的语法要求

#指定任务负责人
owner = “zhangsan@xxx.com

#脚本存放目录/opt/xxx

#脚本名称 hive.hive.dm.dm_xxsh_users

#source 用来标识上游依赖表,一个任务如果有多个上游表,都需要写进去

#(xxx_name 是需要改动的,其余不需要改)
source = {
“table_name”: {
“db”: “db_name”,
“table”: “table_name”
}
}

#如 source,但是每个任务 target 只有一张表
target = {
“db_table”: {
“host”: “hive”,
“db”: “db_name”,
“table”: “table_name”
}
}

#变量列表

#$now

#$now.date 常用,格式示例:2020-12-11
task = ‘’’
写 sql 代码
‘’’

作者:liuyang  创建时间:2023-09-20 14:43
最后编辑:liuyang  更新时间:2023-10-23 13:28