背景:


ods平台的一个很简单的数据抽取需求:

上游系统有一个月表,每个月出上个月数据并放在新建的月表里。例如:20150401出3月份表和数据 TB_B_FT_BROADBAND_201503,

20150501出4月份表和数据 TB_B_FT_BROADBAND_201504。而ods需要每月初等他们数据出来后再抽取过来。

需求很简单,用kettle最常见的表输入和输出抽取即可,但是表输入的select 语句里面的表名需要使用变量。

解决:

使用job kjb如下 完成此需求,如下图,步骤如下:

1  start

2 设置表明使用的变量:时间变量(tabledate.ktr)

3 抽取(即表输入》表输出)(TB_B_FT_BROADBAND.ktr)


kettle抽取mysql表数据并插入到Kafka kettle多表抽取_表名

设置时间变量的转换如下,tabledate.ktr:


kettle抽取mysql表数据并插入到Kafka kettle多表抽取_表名_02


时间变量设置参考:

 TB_B_FT_BROADBAND.ktr

抽取 TB_B_FT_BROADBAND.ktr 如下:


kettle抽取mysql表数据并插入到Kafka kettle多表抽取_kettle动态变量_03


注意点如上 :

1 from 后面的表名 ${} 里面的即是前面设置的变量

2 Replace variables in script? 方框 打上勾。变量即起上作用。


附:


select 语句



1. select     
2. LATN_ID,   
3. MONTH_ID,   
4. PRD_INST_ID,   
5. SERV_NBR,   
6. PRD_ID,   
7. CRM_PRD_ID,   
8. PRD_INST_STAS_ID,   
9. PRD_INST_NAME,   
10. PRD_INST_DESC,   
11. INSTALL_DATE,   
12. ....  
13. from eda.TB_B_FT_BROADBAND_${FILTEDATE}


关于这个需求的整体背景及其后续解决参考:

oracle开发系列(二)存储过程 execute immediate 'create table' 报 insufficient privileges错误解决及用户权限的理解