昨天讓kettle傳入的引數搞的很鬱悶,從網上查一些資訊,大多講的是每個transformation內部傳遞引數,要麼就是講在job中把引數傳進transformation,而且還不正確。
大家最常碰到的問題恐怕就是要做增量抽取了吧,增量抽取不可避免要碰到時間戳,那麼我們假如每天晚上需要抽取當天新增的資料到目標庫,這就需要乙個變數來操作。
要是每個transformation都用乙個單獨控制項來記錄這個變數,貌似沒什麼意義,所以總想有沒有能統一管理乙個引數,然後讓所有的transformation和job都可以讀到呢?
有。首先,開啟.kettle\kettle.properties,直接在裡面定義,比如:
v_yes_date=to_char(sysdate,'yyyymmdd')
這裡支援資料庫函式,說的更直白點,就是這裡定義是個啥,那麼在transformation裡邊取到的它就是啥。
定義之後,儲存,重啟spoon。
在需要的地方,直接%%v_yes_date%%,或者$就可以得到。
舉例:select
name
, ***
from testtable
where
to_char(cdate,'yyyymmdd')=$
或者select
name
, ***
from testtable
where
to_char(cdate,'yyyymmdd')=%%v_yes_date%%
也有人說${}這種方式是在linux下的,%%%%是在windows下的,反正我在windows下這兩種寫法均可。
kettle資料只能說是太少了,就這麼點事折騰我一天了。。。
哦對了,別忘了把那個替換sql語句裡的變數這個勾上。。。
開源ETL工具kettle 資料遷移
由於專案的需求,需要將資料從oracle遷移到mssql,不是簡單的資料複製,而是表結構和欄位名都不一樣,甚至需要處理編碼規範不一致的情況,如下圖所示 注意 oracle和mssql中的同名表的欄位名是不相同的 如果要是採用手工sql語句操作的話會很麻煩,需要考慮 oracle和mssql sql語...
關於使用ETL工具Kettle的簡單介紹(二)
該篇主要描述已實現的一種 etl過程 環境描述 由於源端的表結構和正式庫的表結構大部分是一一對應的,所以對於這大部分表進行設計了一套通用的過程進行轉換。現在先來描述該套設計,對於一對多和多對一的過程下章進行描述。設計概述 主要需要設計幾個所需的表,n 第乙個表 該表是用來配置源端表結構與目的端表結構...
開源ETL工具 kettle的使用入門介紹
首先,給大家介紹一寫關於etl的基本知識。etl是由三個詞組成的。分別是extract,transform,load 也就是抽取,轉換和載入。在現代網際網路企業中使用時比較頻繁的,在商業智慧型bi中也是很受歡迎的。常用的etl工具也有很多,比如infomatia,datastage,kettle,t...