背景:
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)
设置时间变量的转换如下,tabledate.ktr:
时间变量设置参考:http://blog.csdn.net/xiaohai798/article/details/41867835
TB_B_FT_BROADBAND.ktr
抽取 TB_B_FT_BROADBAND.ktr 如下:
注意点如上 :
1 from 后面的表名 ${} 里面的即是前面设置的变量
2 Replace variables in script? 方框 打上勾。变量即起上作用。
附:
select 语句
select LATN_ID, MONTH_ID, PRD_INST_ID, SERV_NBR, PRD_ID, CRM_PRD_ID, PRD_INST_STAS_ID, PRD_INST_NAME, PRD_INST_DESC, INSTALL_DATE, .... from eda.TB_B_FT_BROADBAND_${FILTEDATE}
关于这个需求的整体背景及其后续解决参考:
oracle开发系列(二)存储过程 execute immediate ‘create table‘ 报 insufficient privileges错误解决及用户权限的理解
时间: 2024-10-24 23:19:46