Kettle是一款免费开源的ETL软件,配合定时任务来做数据同步等各种ETL转换、作业特别方便。但当转换和作业多了和时间长了之后,如果没有详细文档记录,可能后面就找不到某些表是怎么生成的数据来源是哪里,某些转换被哪些作业调用的等等。
其实当kettle以资源库形式运行时,转换、作业及其详细内容等均存在资源库数据库里。找到其数据库里对应的表,即可用SQL根据片段反查转换或任务。如查询某个表是哪个转换/作业生成的,某个表被哪些转换/作业用到,某个转换/子作业被哪些作业调用等等。进而进行管理、调整。
分析其数据库结构 ,即可用SQL根据内容片段查询该资源库里kettle的各项转换、作业。常用脚本如下:
1.根据片段反查转换
--1.片段反查Trans
SELECT
d.directory_name,b."NAME" Trans_Name,a.code,a.id_step,c."NAME" step_name,
a.value_str,b.created_date, b.modified_date
from r_step_attribute a
left join r_transformation b
on a.id_transformation=b.id_transformation
left join r_step c
on a.id_step=c.id_step
left join r_directory d
on b.id_directory=d.id_directory
where a.value_str ~* 't_user_data_d';
-- ~* 为PostgreSQL 正则表达式的写法,这里等价于通用的 like '%t_user_data_d%'
2.根据片段反查作业
--2.片段反查Jobs
SELECT
d.directory_name,
a.id_job,
b."NAME" Job_name,
--a.id_jobentry,
c."NAME" 执行单元,
e.description,
a.value_str,
b.created_date,
b.modified_date
from r_jobentry_attribute a
left join r_job b
on a.id_job=b.id_job
left join r_jobentry c
on a.id_jobentry=c.id_jobentry
left join r_directory d
on b.id_directory=d.id_directory
left join r_jobentry_type e
on c.id_jobentry_type=e.id_jobentry_type
where 1=1
and a.value_str ~* 't_user_data_d';
尊重作者劳动,转载请注明出处:札记-Qianrong's Blog » 根据内容片段在资源库SQL反查kettle转换或作业