目录
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
FROM
all_cons_columns A,
all_constraints b
WHERE
A.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_key
FROM ALL_TAB_COLUMNS A --表与字段信息
LEFT JOIN ALL_TAB_COMMENTS B --表名信息
ON B.OWNER = A.OWNER
AND B.TABLE_NAME = A.TABLE_NAME
LEFT JOIN ALL_COL_COMMENTS C --字段名信息
ON C.OWNER = A.OWNER
AND C.TABLE_NAME = A.TABLE_NAME
AND C.COLUMN_NAME = A.COLUMN_NAME
left join tmp
on tmp.tmp2 = A.TABLE_NAME
and tmp.tmp3 = A.COLUMN_NAME
WHERE 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_TYPE
FROM 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端开发的任务进行周期性、一次性调度。