ETL定义

ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)作为BI/DW(Business Intelligence)的核心和灵魂,能够按照统一的规则集成并提高数据的价值,是负责完成数据从数据源向目标数据仓库转化的过程,是实施数据仓库的重要步骤。如果说数据仓库的模型设计是一座大厦的设计蓝图,数据是砖瓦的话,那么ETL就是建设大厦的过程。

主要考虑因素
数仓建设:数仓建设蓝图,是ETL设计的重要参考目标。
数据抽取:从数据源获取所需数据的过程。数据抽取过程会过滤掉目标数据集中不需要的源数据字段或数据记录。
数据转换:按照目标表的数据结构,对一个或多个源数据的字段进行翻译、匹配、聚合等操作得到目标数据的字段。数据转换主要包括:格式转换、字段合并与拆分、数据翻译、数据匹配、数据聚合其他复杂计算。
数据装载:将数据加载到目标数据库中。

ETL分层架构


image.png

ODS层

执行 抽取数据JOB

考虑到GP对文本文件读取方式性能更高,采用 文本文件方式,由源表抽取到本地文本文件,上传到文件服务器,通过外部表的方式抽取到GP数据库中

DIM层

负责执行 转换维度表 JOB

DWD层

负责执行 转换生成业务数据明细表 JOB

DWS层

负责执行 汇总业务明细数据 JOB

ADS层

负责执行 生成业务部门专用数据 JOB

ETL流程规则

设计阶段

分析源和目标数据集的数据结构,定义合理的数据转换逻辑

实施阶段

按照设计阶段指定的逻辑规则进行编码,实现数据的ETL过程 规则建议如下
1.开发最好以JOB为单位,每一块一个job 最后,通过job联通
2.每层JOB 分文件存储,方便执行job
3.尽量一个抽取步骤一个转换,容易错误排查
4.命名尽量和数仓表同步,方便查找
5.转换内加注释,便于了解该转换具体做什么任务

运维阶段

编辑运维文档,在项目期间运维自己编辑的JOB

ETL转换命名规则

ODS层命名规则

数据抽取: 从数据源抽取数据到文本文件

转换命名规则:<层次名称><子系统名简拼或英文名><可选1位流水号><子系统表名>_

规则举例:ods_xsxt_s_contract,ods_xsxt_s_contract_t0(代表实时数据)

存储文本文件命名规则:<层次名称><子系统名简拼或英文名><子系统表名>
规则举例:ods_xsxt_s_contract

生成外部表:使用外部表读取文本文件

转换命名规则:<子系统名简拼或英文名><可选1位流水号>_<子系统表名>
规则举例:ods_xsxt_s_contract

数据导入gp:从外部表抽取数据到gp数据库中

转换命名规则:extto_ods<子系统表名>

SQL编写规范

原则定义

  1. 要求代码行清晰、整齐,具有一定的可观赏性;
    2. 代码编写要充分考虑执行速度最优的原则;
    3. 代码行整体层次分明、结构化强;
    4. 代码中应有必要的注释,以增强代码的可读性;

    大小写定义

    所有sql语句均采用小写,表别名也要小写
    表名、视图、存储过程名、字段名全部小写