Kettle
Kettle是一款开源的ETL工具,纯Java编写,工作中经常用到一些转换,特此记录。
1. 回刷历史数据
如果历史数据需要大批量回刷,按照时间段跑数据,动辄几亿甚至千亿的数据操作会造成数据库断连,Select的时间可以达到十几分钟,按日跑需要不断地进行改参数,循环脚本可解决。
job中对ETL参数做初始设置:
select to_number(to_char(date('20210731'),'yyyymmdd')) as P_SYSDATE_NUM,
to_number(to_char(ETL_DATE,'yyyymmdd')) as P_ETL_DATE_NUM,
to_char(ETL_DATE,'yyyymmdd') AS P_ETL_DATE
from tmp.ETL_INCREMENTAL
ETL日期经过转换,到字段检验
如果值小于设置的结束日期,进入循环。
select jobname, trans_name, table_name, etl_frequency,
ETL_DATE+1 as P_NEXT_ETL_DATE
from tmp.ETL_INCREMENTAL
对ETL日期更新,更新之后执行转换。
2. 血缘关系解析
资源导出成xml文件
从xml中获取到步骤和转换,转换和转换,作业和转换之间的关系,方便追踪血缘关系,为下一步数据治理打好基础。
- 数据质量监控
ETL同步在实际过程中,往往会遇见上游回刷,每日监控同步数据量及重要指标