任務(wù)5.2-數(shù)據(jù)高級轉(zhuǎn)換_第1頁
任務(wù)5.2-數(shù)據(jù)高級轉(zhuǎn)換_第2頁
任務(wù)5.2-數(shù)據(jù)高級轉(zhuǎn)換_第3頁
任務(wù)5.2-數(shù)據(jù)高級轉(zhuǎn)換_第4頁
任務(wù)5.2-數(shù)據(jù)高級轉(zhuǎn)換_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

ETL數(shù)據(jù)預(yù)處理技術(shù)主講人:趙美枝任務(wù)五數(shù)據(jù)轉(zhuǎn)換任務(wù)5.2數(shù)據(jù)高級轉(zhuǎn)換Kettle數(shù)據(jù)轉(zhuǎn)換可以完成數(shù)據(jù)合并、排序及運(yùn)算功能,本節(jié)主要學(xué)習(xí)數(shù)據(jù)高級轉(zhuǎn)換——運(yùn)算。數(shù)據(jù)高級轉(zhuǎn)換實(shí)際應(yīng)用中,對源文件數(shù)據(jù)進(jìn)行轉(zhuǎn)換時,往往采取轉(zhuǎn)換存儲格式或數(shù)據(jù)類型實(shí)現(xiàn),而kettle可以省去文件轉(zhuǎn)換環(huán)節(jié),在不改變源文件的基礎(chǔ)上,對其數(shù)據(jù)進(jìn)行一系列運(yùn)算,得到所需結(jié)果。01.“公式”控件應(yīng)用02.03.目錄“JavaScript代碼”控件應(yīng)用“利用janino計算java表達(dá)式”控件應(yīng)用CONTENTS子任務(wù)5.2.1“公式”控件應(yīng)用公式是用來計算數(shù)據(jù)流中數(shù)據(jù)的表達(dá)式。公式可以是“A+B”這樣的簡單計算,也可以是類似“if/then”復(fù)雜業(yè)務(wù)邏輯判斷的表達(dá)式在某年級的“期末考試成績.xls”文件中,為了統(tǒng)計成績以表彰優(yōu)秀的學(xué)生,需要使用公式組件,統(tǒng)計學(xué)生所有考試科目的總分,并對總分650分以上的學(xué)生評優(yōu)標(biāo)注“優(yōu)秀”任務(wù)提出:數(shù)據(jù)準(zhǔn)備“期末考試成績”文件,內(nèi)容如下圖;Step1:創(chuàng)建轉(zhuǎn)換使用Kettle工具,創(chuàng)建一個轉(zhuǎn)換,命名為“公式應(yīng)用”

,并添加“Excel輸入”控件、“公式”腳本控件以及Hop跳連接線如下圖:Step1:創(chuàng)建轉(zhuǎn)換打開“Excel輸入”對話框,先點(diǎn)擊“文件或目錄”右側(cè)的“瀏覽”,添加文件所在路徑,再單擊“增加”,將文件添加到“選中的文件”中。Step2:配置“Excel輸入”切換到“工作表”選項(xiàng)卡下,獲取工作表的名稱為“sheet1”,起始行、起始列均設(shè)置為0(這里的設(shè)置根據(jù)導(dǎo)入的Excel文件中的實(shí)際表名和起始行列而定)Step2:配置“Excel輸入”切換到“字段”選項(xiàng)卡下,單擊【獲取來自頭部數(shù)據(jù)的字段】,得到文件中各字段及其屬性,如下左圖,預(yù)覽記錄如下右圖:Step3:配置“公式”雙擊“公式”控件,打開對話框,如下圖Step3:配置“公式”【公式】組件的參數(shù)包含組件的基礎(chǔ)參數(shù)和【字段】表參數(shù),有關(guān)參數(shù)說明如表所示。參數(shù)名稱說明基礎(chǔ)參數(shù)步驟名稱表示公式組件名稱,在單個轉(zhuǎn)換工程中,名稱必須唯一。默認(rèn)值是【公式】組件名稱字段新字段表示新增加的字段名稱。默認(rèn)值為空公式表示計算公式,單擊單元格時,系統(tǒng)打開公式編輯器窗口,提供可用函數(shù)的幫助,方便用戶編輯計算公式。默認(rèn)值為空值類型表示字段的數(shù)據(jù)類型。類型選項(xiàng)有:BigNumber、Binary、Boolean、Date、Integer、InternetAddress、Number、String、Timestamp。默認(rèn)值為空長度表示字段長度。默認(rèn)值為空精度表示數(shù)字類型字段的浮點(diǎn)數(shù)的精確位數(shù)。默認(rèn)值為空替換值表示字段需要替換值。默認(rèn)值為空Step3:配置“公式”在【字段】表中,添加【總分】【評優(yōu)】兩個新字段,分別設(shè)置連個字段的類型及長度等。如下圖Step3:配置“公式”編輯“總分”字段,輸入總分的計算公式,如下圖,注意此處的符號均為英文符號,單擊【ok】按鈕完成。Step3:配置“公式”“總分”與“評優(yōu)”字段編寫的最終效果如下圖,點(diǎn)擊【確定】按鈕完成“公式”控件配置Step4:運(yùn)行轉(zhuǎn)換點(diǎn)擊工作區(qū)的運(yùn)行按鈕,保存當(dāng)前轉(zhuǎn)換,開啟運(yùn)行,結(jié)果如右圖:子任務(wù)5.2.2“JavaScript代碼”控件應(yīng)用Kettle提供用戶界面,可采用JavaScript腳本編程修改數(shù)據(jù)。將某運(yùn)動會個代表隊獲獎情況的數(shù)據(jù)進(jìn)行統(tǒng)計,計算出每個代表隊的獎牌總數(shù)任務(wù)提出:Step1:創(chuàng)建轉(zhuǎn)換使用Kettle工具,創(chuàng)建一個轉(zhuǎn)換,命名為“公式應(yīng)用”

,并添加“Excel輸入”控件、“javascript代碼”腳本控件以及Hop跳連接線如下圖:Step2:配置“Excel輸入”打開“Excel輸入”對話框,先點(diǎn)擊“文件或目錄”右側(cè)的“瀏覽”,添加文件所在路徑,再單擊“增加”,將文件添加到“選中的文件”中。Step2:配置“Excel輸入”確定工作表位置,切換到“字段”選項(xiàng)卡,配置如下:Step2:配置“Excel輸入”確定工作表位置,切換到“字段”選項(xiàng)卡,配置如下,單擊【確定】完成Step3:配置“JavaScript代碼”雙擊“JavaScript代碼”控件,打開對話框,如右圖Step3:配置“JavaScript代碼”參數(shù)名稱說明步驟名稱表示JavaScript代碼組件名稱,在單個轉(zhuǎn)換工程中,名稱必須唯一。默認(rèn)值是【JavaScript代碼】組件名稱JavaScript函數(shù)TransformScripts表示創(chuàng)建的JavaScript腳本TransformConstants表示預(yù)定義的靜態(tài)常量SKIP_TRANSFORMATION:從輸出行記錄數(shù)據(jù)集中排除當(dāng)前行記錄,并在下一行記錄上繼續(xù)處理ERROR_TRANSFORMATION:從輸出行記錄數(shù)據(jù)集中排除當(dāng)前行,生成錯誤,不處理任何剩余行記錄CONTINUE_TRANSFORMATION:在輸出行記錄集中包含當(dāng)前行記錄TransformFunctions表示在腳本中使用的字符串、數(shù)字、日期、邏輯、特殊函數(shù)和文件函數(shù)。這些函數(shù)是用Java實(shí)現(xiàn)的,執(zhí)行速度比JavaScript函數(shù)快,每個函數(shù)都有一個演示其用法的示例腳本。雙擊該函數(shù),將其添加到Javascript編輯區(qū)中。右鍵單擊并選擇Sample示例腳本,將Sample示例腳本添加到Java腳本窗格中Inputfields表示輸入字段Outputfields表示輸出字段【JavaScript代碼】組件的參數(shù)除了包含組件的基礎(chǔ)參數(shù)外,還包含了以下3部分參數(shù)。有關(guān)參數(shù)說明如表所示Step3:配置“JavaScript代碼”Step3:配置“JavaScript代碼”Step3:配置“JavaScript代碼”這里組件名稱用默認(rèn)值“JavaScript代碼”。在【JavaScript】編輯區(qū)中,編輯JavaScript腳本如下。var獎牌總數(shù)=0;for(vari=0;i<getInputRowMeta().size();i++){varvalueMeta=getInputRowMeta().getValueMeta(i);if(valueMeta.getTypeDesc().equals("Number")){

獎牌總數(shù)=獎牌總數(shù)+str2num(row[i]);}}Step3:配置“JavaScript代碼”單擊【獲取變量】,字段框中會出現(xiàn)所有字段,選中需要刪除的行,右單擊然后點(diǎn)擊“刪除選中的行”,只保留“獎牌總數(shù)”,對該字段的設(shè)置如左圖。單擊【確定】按鈕完成控件配置。Step4:運(yùn)行轉(zhuǎn)換單擊工作區(qū)上方的運(yùn)行按鈕,開啟運(yùn)行,保存為“JavaScript代碼應(yīng)用”,運(yùn)行結(jié)果如右圖:子任務(wù)5.2.3“利用janino計算java表達(dá)式”控件應(yīng)用Janino是一個超小型,超快的Java編譯器,Kettle可以利用Janino提供類和對象,定義Java表達(dá)式來計算新值。任務(wù)提出:在某年級的“2020年4月月考成績.xls”文件中,為了了解學(xué)生的考試情況,需要采用利用Janino計算Java表達(dá)式組件,統(tǒng)計每個學(xué)生月考成績的總分,并按照四舍五入的方法,計算每個學(xué)生的平均分?jǐn)?shù)據(jù)準(zhǔn)備現(xiàn)有Excel文件,“2020年4月月考成績”.xls,內(nèi)容如圖;Step1:創(chuàng)建轉(zhuǎn)換使用Kettle工具,創(chuàng)建一個轉(zhuǎn)換,命名為“janino應(yīng)用”

,并添加“Excel輸入”控件、“利用janino計算java表達(dá)式”腳本控件以及Hop跳連接線如左圖:Step2:配置“Excel輸入”先點(diǎn)擊“文件或目錄”右側(cè)的“瀏覽”,添加文件所在路徑,再單擊“增加”,將文件添加到“選中的文件”中。Step2:配置“Excel輸入”切換到“工作表”選項(xiàng)卡下,獲取工作表的名稱為“sheet1”,起始行、起始列均設(shè)置為0(這里的設(shè)置根據(jù)導(dǎo)入的Excel文件中的實(shí)際表名和起始行列而定)Step2:配置“Excel輸入”切換到“字段”選項(xiàng)卡下,單擊【獲取來自頭部數(shù)據(jù)的字段】,得到文件中各字段及其屬性,如下左圖,預(yù)覽數(shù)據(jù)如下右圖。Step3:配置“利用janino計算java表達(dá)式”控件雙擊“利用janino計算java表達(dá)式”控件,打開對話框,如下圖Step3:配置“利用janino計算java表達(dá)式”控件組件的參數(shù)包含組件的基礎(chǔ)參數(shù)和【Fields】表參數(shù),有關(guān)參數(shù)說明如表所示。參數(shù)名稱說明基礎(chǔ)參數(shù)步驟名稱表示利用Janino計算Java表達(dá)式組件名稱,在單個轉(zhuǎn)換工程中,名稱必須唯一。默認(rèn)值是【利用Janino計算Java表達(dá)式】組件名稱FieldsNewfield表示數(shù)據(jù)流中的新字段名稱。如果要覆蓋現(xiàn)有字段,那么在這里和“Replacevalue”選項(xiàng)中定義該字段。缺省值為空J(rèn)avaexpression表示Java表達(dá)式。缺省值為空Valuetype表示輸出字段的數(shù)據(jù)類型。缺省值為空Length表示輸出字段的長度的值。缺省值為空Precision表示輸出字段的精度的值。缺省值為空Replacevalue表示要替換時,選擇與“Newfield”名稱相同的名稱。取值為Y、N,缺省值為空Step3:配置“利用janino計算java表達(dá)式”控件在【Fields】表中設(shè)置參數(shù),如圖所示,此時完成【利用Janino計算Java表達(dá)式】組件的參數(shù)設(shè)置。Step4:運(yùn)行轉(zhuǎn)換單擊工作區(qū)上方的運(yùn)行按鈕,開啟運(yùn)行,保存為“janino應(yīng)用”,運(yùn)行結(jié)果如下圖:Step5:增加輸出控件為了將運(yùn)行結(jié)果保存為新的文件,則在原轉(zhuǎn)換中添加一個“文本文件輸出”控件,如下圖:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論