背景:
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
注意點如上 :
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錯誤解決及用戶權限的理解