数据转换实例
現有一個文本文件personnel_data.txt,包含字段id、name、id_number、household_register和salary。通過kettle工具,實現以下功能:
 一.對文本文件personnel_data.txt中的數據進行數據粒度的轉換,即將文本文件personnel_data.txt中字段為household_register的數據統一成省份,并輸出到文本文件personnle_data_new.txt中。
 1.打開Kettle工具,新建轉換
?2.配置文本文件輸入控件
 (1)雙擊“文本文件輸入”控件,進入“文本文件輸入”界面,單擊“瀏覽”按鈕,選擇personnel_data.txt文件;單擊“增加”按鈕,將personnel_data.txt文件添加到generalization轉換中。
 (2)單擊“內容”選項卡,在分隔符處清除默認分隔符“;”,單擊“Insert TAB”按鈕,在分隔符處插入一個制表符;取消勾選“頭部”復選框。
(3)單擊“字段”選項卡,根據personnel_data.txt文件的內容添加對應的字段名稱,并指定數據類型。
3.配置字段選擇控件
 雙擊“字段選擇”控件,進入“選擇/改名值”界面,在“選擇和修改”選項卡處添加字段名稱:
4.配置排序記錄控件
 雙擊“排序記錄”控件,進入“排序記錄”界面,并在“字段”框中添加字段household_register,對其進行排序:
?5.配置表輸入控件
 雙擊“表輸入”控件,進入“表輸入”界面,單擊“新建”按鈕,配置數據庫連接,配置完成后單擊“確認”按鈕,在SQL框中編寫SQL語句,用于查詢city數據表中字段city和pid的數據,用于與personnel_data.txt文件中household_register字段進行合并連接:
?6.配置排序記錄2控件
 雙擊“排序記錄 2”控件,進入“排序記錄”界面,在“字段”框中添加字段city,并對其進行排序:
?7.配置記錄集連接控件
 雙擊“記錄集連接”控件,進入“合并排序”界面,在“第一個步驟”處的下拉框中選擇“排序記錄”,“第二個步驟”處的下拉框中選擇“排序記錄2”;在“第一個步驟的連接字段”和“第二個步驟的連接字段”處添加連接字段,這里添加的連接字段是household_register和city;在“連接類型”處的下拉框選擇連接類型,這里選擇的LEFT OUTER,即左外連接:
8.配置字段選擇2控件
 雙擊“字段選擇2”控件,進入“選擇/改名值”界面,在“選擇和修改”選項卡處添加字段名稱,這里添加的是記錄集連接流中的字段household_register和pid:
9.配置排序記錄3控件
 雙擊“排序記錄 3”控件,進入“排序記錄”界面,在“字段”框中添加字段pid,并對其進行排序:
?10.配置表輸入2控件
 雙擊“表輸入2”控件,單擊“新建”按鈕,配置數據庫連接,配置完成后單擊“確認”按鈕;在SQL框中編寫SQL語句,用于查詢provincial數據表中字段Provincial和pid的數據,用于與household_register字段進行合并連接:
11.配置排序記錄4控件
 雙擊“排序記錄 4”控件,進入“排序記錄”界面,在“字段”框中添加字段pid,并對其進行排序:
12.配置記錄集連接2控件
 雙擊“記錄集連接2”控件,進入“合并排序”界面,在“第一個步驟”處的下拉框中選擇“排序記錄3”,“第二個步驟”處的下拉框中選擇“排序記錄4”;在“第一個步驟的連接字段”和“第二個步驟的連接字段”處添加連接字段,這里添加的連接字段是pid;在“連接類型”處的下拉框選擇連接類型,這里選擇的LEFT OUTER,即左外連接:
13.配置字段選擇3控件
 雙擊“字段選擇3”控件,進入“選擇/改名值”界面,在“選擇和修改”選項卡處添加字段名稱,這里添加的是記錄集連接2流中的字段household_register和Provincial:
14.配置表輸出控件
 雙擊“表輸出”控件,單擊“新建”按鈕,配置數據庫連接,配置完成后單擊“確認”按鈕;單擊目標表右側的【瀏覽】按鈕,選擇輸出的目標表,即臨時數據表personnel;勾選“指定數據庫字段”的復選框,單擊“輸入字段映射”按鈕,彈出“映射匹配”對話框,依次選中“源字段”選項框的字段和“目標字段”選項框的字段,再單擊“Add”按鈕,將一對映射字段添加至“映射”選項框中:
15.打開Kettle工具,新建轉換
16.配置表輸入控件
 雙擊“表輸入”控件,進入“表輸入”界面,單擊“新建”按鈕,配置數據庫連接,配置完成后單擊“確認”按鈕;在SQL框中編寫SQL語句,用于查詢數據表personnel中的數據:
17.配置字段選擇控件
 雙擊“字段選擇”控件,進入“選擇/改名值”界面,在“選擇和修改”選項卡處添加字段名稱:
18.配置排序記錄控件
 雙擊“排序記錄”控件,進入“排序記錄”界面,并在“字段”框中添加字段id,對其進行排序:
?19.配置文本文件輸入控件
 (1)雙擊“文本文件輸入”控件,進入“文本文件輸入”界面,單擊“瀏覽”按鈕,選擇要抽取personnel_data.txt文件;單擊“增加”按鈕,將要抽取的personnel_data.txt文件添加到generalization_merge轉換中;
 (2)單擊“內容”選項卡,在分隔符處清除默認分隔符“;”,單擊“Insert TAB”按鈕,在分隔符處插入一個制表符,取消勾選“頭部”復選框;
 (3)單擊“字段”選項卡,根據文本文件personnel_data.txt的內容添加對應的字段名稱,并指定數據類型
 (3)單擊“字段”選項卡,根據文本文件personnel_data.txt的內容添加對應的字段名稱,并指定數據類型:
20.配置字段選擇2控件
 雙擊“字段選擇2”控件,進入“選擇/改名值”界面,在“選擇和修改”選項卡處添加字段名稱:
?21.配置排序記錄2控件
 雙擊“排序記錄2”控件,進入“排序記錄”界面,并在“字段”框中添加字段id,對其進行排序:
22.配置記錄集連接控件
 雙擊“記錄集連接”控件,進入“合并排序”界面,在“第一個步驟”處的下拉框中選擇“排序記錄”,“第二個步驟”處的下拉框中選擇“排序記錄2”;在“第一個步驟的連接字段”和“第二個步驟的連接字段”處添加連接字段,這里添加的連接字段是id;在“連接類型”處的下拉框選擇連接類型,這里選擇的LEFT OUTER,即左外連接:
23.配置字段選擇3控件
 雙擊“字段選擇3”控件,進入“字段選擇”界面,在“選擇和修改”選項卡處添加字段名稱,并將字段household_register_new改為household_register:
24.配置文本文件輸出控件
 (1)雙擊“文本文件輸出”控件,進入“文本文件輸出”界面,單擊“文件名稱”右側的“瀏覽”按鈕,選擇輸出文件,即文本文件personnel_data_new:
 (2)單擊“內容”選項卡,進入“內容”界面,清除分隔符處的默認分隔符,單擊“插入Tab”按鈕,插入Tab分隔符。并在編碼處的下拉框選擇“UTF-8”編碼:
 (3)單擊“字段”選項卡,進入“字段”界面,添加要輸出的字段:
25.打開Kettle工具,新建作業
26.配置轉換控件
 雙擊圖6-41中的“轉換”控件,進入“轉換”界面,選擇添加轉換generalization:
27.配置轉換2控件
 雙擊“轉換2”控件,進入“轉換”界面,選擇添加轉換generalization_merge:
?28.運行作業generalization
 單擊作業工作區頂部的按鈕,運行作業generalization,實現將文本文件personnel_data.txt中字段為household_register的數據統一成省份(直轄市),并輸出到文本文件personnel_data_new.txt中:
?二.對文本文件personnel_data_new.txt中字段為salary的數據進行商務規則計算,即計算每個人的月薪(以22天工作日計算),最終輸出到文本文件personnel_data_monthly_salary.txt中。
1.打開Kettle工具,新建轉換
2.配置文本文件輸入控件
 (1)雙擊“文本文件輸入”控件,進入“文本文件輸入”界面,單擊"瀏覽"按鈕,選擇要抽取的personnel_data_new.txt文件;單擊"增加"按鈕,將要抽取的personnel_data_new.txt文件添加到轉換monthly_salary中:
 (2)單擊“內容”選項卡,在分隔符處清除默認分隔符“;”,單擊“Insert TAB”按鈕,在分隔符處插入一個制表符:
 (3)單擊“字段”選項卡,根據personnel_data_new.txt文件的內容添加對應的字段名稱,并指定數據類型:
3.配置增加常量控件
 雙擊“增加常量”控件,進入“增加常量”界面,在字段框中添加一個字段days,并給定一個值22:
4.配置計算器控件
 雙擊“計算器”控件,進入“計算器”界面,在字段框中添加一個字段monthly_salary,用于存儲月薪,該字段是由字段days和salary進行相乘所得:
?
5.配置文本文件輸出控件
 (1)雙擊“文本文件輸出”控件,進入“文本文件輸出”界面,單擊“文件名稱”右側的【瀏覽】按鈕,選擇輸出文件,即文本文件personnel_data_monthly_salary;
(2)單擊“內容”選項卡,進入“內容”界面,清除分隔符處的默認分隔符,單擊“插入Tab”按鈕,插入Tab分隔符,并在編碼處的下拉框選擇“UTF-8”編碼;
 (3)單擊“字段”選項卡,進入“字段”界面,添加要輸出的字段:
?6.運行轉換monthly_salary
 如下圖所示,運行成功:
總結
 
                            
                        - 上一篇: 【LeetCode】马三来刷题之Vali
- 下一篇: 浮点类型
