目录
ETL介绍
ETL简介
ETL包含的三部分
ETL基本概念
ETL资源库
ETL变量
业务表梳理以及接入规划
数据接入流程
业务表梳理
ETL任务规范
接入规划
数据接入中的方便工具
具体例子
导出生产表信息
1、ORACLE
2、MYSQL
ETL数据增量抽取任务开发
1、ORACLE通用流程
ORACLE通用流程图所需建立临时表
2、接口接入流程举例
3、文件数据从FTP获取、解压、解析与入库流程举例
任务调度
ETL介绍
ETL简介
ETL(Extratction,Transformation and Loading)是构建数据仓库的基础技术,也是批量数据交换的基础技术,是将数据从源抽取、转换、整合、清洗并加载到目标的过程。
ETL包含的三部分
- 一.数据抽取:即确定数据源,采集原始数据,通过不同的数据接口,从不同的数据源中抽取数据。
- 二.数据转换:指接收来自不同系统的输入并将其转换成目标需要的格式的过程,包括数据的各种统计、合并、汇总、查询、过滤、排序、函数计算、合并拆分、转换等。数据清洗是对抽取的数据进行有效性检查,从中去除无效、重复、错误记录的过程。
- 三. 数据装载:负责将数据按照目标数据库元数据定义的表结构装入目标系统,即对经过前几步清洗和转换后的数据进行存储。
ETL基本概念
- 步骤:ETL的基本构成块,最小的功能单位。
- 转换:由多个步骤组成的业务处理流程。
- 作业:由多个步骤和转换组成的业务流程。
- 跳:步骤之间的关系,也可以看做步骤间的缓存。
ETL资源库
用来保存转换和作业的数据库。
ETL变量
命名参数:
变量的一种,作为转换或作业参数使用。
通过改变命名参数,可以实现流程的复用。
业务表梳理以及接入规划
数据接入流程
业务表梳理
ETL任务规范
接入规划
数据接入中的方便工具
1、Excel
2、文本编辑器
具体例子
导出生产表信息
1、ORACLE
with tmp as (
SELECT A.CONSTRAINT_NAME tmp1,A.table_name tmp2,A.COLUMN_NAME tmp3
FROMall_cons_columns A,all_constraints b
WHEREA.CONSTRAINT_NAME = b.CONSTRAINT_NAME AND b.constraint_type = 'P'-- AND A.OWNER = 'XRAPUSER'-- AND A.TABLE_NAME = 'AGZX_HLWPJ'
)SELECT '62.64.13.44' AS IP,'xxx' AS SYS,A.OWNER,A.TABLE_NAME AS TABLE_NAME_EN --英文表名,B.COMMENTS AS TABLE_NAME_CN --中文表名,A.COLUMN_ID --字段序号,A.COLUMN_NAME AS COLUMN_NAME_EN --字段名称,C.COMMENTS AS COLUMN_NAME_CN --字段注释,A.DATA_TYPE --字段类型,A.CHAR_LENGTH --字段长度,A.DATA_LENGTH --数据长度,A.DATA_PRECISION --数据精度,A.DATA_SCALE --小数位,case when tmp.tmp1 is not null then 'Y' else null end as primary_keyFROM ALL_TAB_COLUMNS A --表与字段信息LEFT JOIN ALL_TAB_COMMENTS B --表名信息ON B.OWNER = A.OWNERAND B.TABLE_NAME = A.TABLE_NAMELEFT JOIN ALL_COL_COMMENTS C --字段名信息ON C.OWNER = A.OWNERAND C.TABLE_NAME = A.TABLE_NAME AND C.COLUMN_NAME = A.COLUMN_NAMEleft join tmp on tmp.tmp2 = A.TABLE_NAME and tmp.tmp3 = A.COLUMN_NAMEWHERE A.OWNER = 'XRAPUSER'
ORDER BY A.OWNER,A.TABLE_NAME,A.COLUMN_ID
2、MYSQL
SELECT "62.64.39.135" AS IP,"sfbz" AS SYS,TABLE_SCHEMA,TABLE_NAME AS TABLE_NAME_EN ," " AS TABLE_NAME_CN ,ORDINAL_POSITION ,COLUMN_NAME AS COLUMN_NAME_EN ,COLUMN_COMMENT AS COLUMN_NAME_CN ,DATA_TYPE ,CHARACTER_MAXIMUM_LENGTH ,CHARACTER_OCTET_LENGTH ,NUMERIC_PRECISION ,NUMERIC_SCALE ," " as primary_key,COLUMN_TYPEFROM information_schema.columns where table_name like "result_%" and table_schema="dzzyk" order by TABLE_NAME_EN ,ORDINAL_POSITION
ETL数据增量抽取任务开发
下列例子中的KTR流程,思路打通,其实开发还是比较顺畅,如果有需要下面流程参考的大佬可以一起交流,关于Kettle具体使用各个组件的方法,后续可以再出文章介绍。
1、ORACLE通用流程
本流程主要是使用Oracle的ORA_ROW_SCN字段来做增量的,可以参考。
当然,具体要使用这个流程的话,还有中间表需要建立:
ORACLE通用流程图所需建立临时表
2、接口接入流程举例
全量请求证件号码接口,数据入库:
增量请求抓拍数据接口,数据入库:
3、文件数据从FTP获取、解压、解析与入库流程举例
任务调度
对CS端开发的任务进行周期性、一次性调度。