最近由於工作涉及的oltp系統公升級etl工具的原因,接觸了kettle工具,由於沒有做好基礎工作,公司大牛給的關於kettle的資料《pdi構建開源etl解決方案》,沒有認真了解,導致使用起來步履維艱。
記錄關聯-笛卡爾輸出
例:按照舊etl工具,需要將基礎表a、表b、表c、表d,4張表的資料儲存到本地資料庫,然後,再通過sql將4張表的資料關聯到一張結果表,過程共產生5張表,嚴重浪費資料庫資源,以及當產生問題,增加維護難度。現使用kettle工具後,將不再需要將基礎表a、表b、表c、表d這4張表的資料保留到本地資料庫,大大降低資料庫的壓力。
下圖為合成流程圖:
a、b、c、d的輸出是沒有問題的,就用表輸入就好,但是,需要注意的是,當a、b、c、d4張表的關聯關係中,有欄位名字一樣的情況下,建議各自改為能明顯區分的欄位名,(雖然,在記錄關聯(笛卡爾輸出)中,條件選擇中是按照關聯表的順序羅列欄位名的,但是一旦字段數量過大,就很有可能讓人眼花繚亂,所以建議設定明顯的字段別名),下圖為本列條件選擇的字段列表:
很長吧,如果不特意標識,就需要乙個乙個字段尋找,所以設定別名很在一定程度上提高工作效率。
LEFT JOIN關聯出現笛卡爾積
消除笛卡爾乘積最根本的原因不是在於連線,而是在於唯一id,就像學號,乙個學生就只有乙個學號,學號就是這個學生的唯一標識碼。左連線只是以左邊的表為基準,左邊的id和右邊id都是唯一,就不會產生笛卡爾現象,如果右邊有兩個id對應左邊乙個id,就算你是左連線,一樣會產生1對多的現象。例子 select f...
避免笛卡爾積
在mysql中建立臨時表 create table temptable 2 instanceid numeric 30 celltype varchar 128 enodeb id numeric 30 eutrancell id numeric 30 engine myisam default c...
js笛卡爾積
可以用來模擬路徑,或者標籤的順序。笛卡兒積組合 function descartes list var result var pindex null var tempcount 0 var temp 根據引數列生成指標物件 for var index in list pindex index 單維度...