【正文】
URCEIDVARCHAR2(35)提單數(shù)據(jù)源關(guān)鍵字BLNOSTATUTIMEVARCHAR2(20)提單狀態(tài)時間BLNOMSGTIMEVARCHAR2(20)提單寫入時間CTNNOVARCHAR2(35)箱號CTNNOSTATUSOURCEVARCHAR2(35)箱號狀態(tài)代碼CTNNOCODESTATUVARCHAR2(35)暫不用CTNNOSTATUVARCHAR2(250)暫不用CTNNOSOURCEIDVARCHAR2(35)箱號數(shù)據(jù)源關(guān)鍵字CTNNOSTATUTIMEVARCHAR2(20)箱號狀態(tài)時間CTNNOMSGTIMEVARCHAR2(20)箱號寫入時間DATASOURCEVARCHAR2(35)數(shù)據(jù)來源CODECARGOVARCHAR2(35)貨代CODESHIPPERVARCHAR2(35)船代CODECUSTOMSBROKERVARCHAR2(35)報關(guān)行CTNMANAGERVARCHAR2(35)箱管BLNOWTNOVARCHAR2(35)提單委托號CTNNOWTNOVARCHAR2(35)箱委托號CTNYARDVARCHAR2(35)場站TRUCKNOVARCHAR2(35)車號32 提單信息回執(zhí)底賬表K_ETL_CCBLNORESPONSE提單信息回執(zhí)底賬表NameData TypeCommentCCRESPON_BLNO_INFO_IDNUMBER主鍵MSGTYPEVARCHAR2(10)報文類型FILEIDVARCHAR2(20)報文id(報文表主鍵)MESSAGEIDVARCHAR2(50)消息idEDI_USERNAMEVARCHAR2(25)用戶名IMOVARCHAR2(50)船識別碼VESSELVARCHAR2(35)英文船名VOYAGEVARCHAR2(10)航次BLNOVARCHAR2(35)提單號RESPON_TYPE_CODEVARCHAR2(10)回執(zhí)類型代碼RESPON_TYPE_TEXTVARCHAR2(512)回執(zhí)類型MSGTIMEVARCHAR2(14)報文時間33 箱信息回執(zhí)底賬表K_ETL_CCCTNNORESPONSE箱信息回執(zhí)底賬表NameData TypeCommentCCRESPON_CTN_INFO_IDNUMBER主鍵MSGTYPEVARCHAR2(10)報文類型FILEIDVARCHAR2(20)報文id(報文表主鍵)MESSAGEIDVARCHAR2(50)消息idEDI_USERNAMEVARCHAR2(25)用戶名IMOVARCHAR2(50)船標(biāo)示號VESSELVARCHAR2(35)英文船名VOYAGEVARCHAR2(10)航次CTNNOVARCHAR2(35)箱號RESPON_TYPE_CODEVARCHAR2(10)回執(zhí)類型代碼RESPON_TYPE_TEXTVARCHAR2(512)回執(zhí)類型MSGTIMEVARCHAR2(14)報文時間34 出口裝箱單表K_T_COSTCO出口裝箱單表NameData TypeCommentSTATUVARCHAR2(10)“裝箱單O”BLNOVARCHAR2(20)提單號CTNNOVARCHAR2(20)箱號BLNOSTATUTIMEVARCHAR2(30)操作時間CTNTYPEVARCHAR2(10)箱型(大小+類型)CARGOAGENTVARCHAR2(20)貨代CODECARGOAGENTVARCHAR2(20)貨代代碼35 集裝箱裝卸船底賬表K_T_COARRISTATUS集裝箱裝卸船底賬表NameData TypeCommentIMOVARCHAR2(50)船識別號CODEVESSELVARCHAR2(35)船名代碼VOYAGEVARCHAR2(35)航次BLNOVARCHAR2(35)提單號CTNNOVARCHAR2(35)箱號STATUSOURCEVARCHAR2(35)狀態(tài)代碼:裝LOAD/卸DISSOURCEIDNUMBER數(shù)據(jù)源關(guān)鍵字CTNYARDVARCHAR2(35)場站IOTIMEVARCHAR2(35)裝卸時間MSGTIMEDATE寫入/更新時間36 中轉(zhuǎn)箱表K_T_ZZ中轉(zhuǎn)箱表NameData TypeCommentCTNNOVARCHAR2(20)箱號CTNTYPEVARCHAR2(10)箱型(大下+類型)IOSIGNVARCHAR2(10)進(jìn)出口標(biāo)示BLNOVARCHAR2(20)提單號CODEDELIVERYVARCHAR2(70)中轉(zhuǎn)港代碼DELIVERYVARCHAR2(70)中轉(zhuǎn)港CTNNOSOURCEIDVARCHAR2(50)COARRI_PLCONINFO主鍵CTNNOSTATUTIMEVARCHAR2(20)操作時間 ETL設(shè)計 ETL分析場站進(jìn)出門信息、入庫單信息、貨代報檢信息、訂艙數(shù)據(jù)信息、電子裝箱單信息、裝卸船信息等是需要抽取載入集裝箱進(jìn)出口信息底賬表K_ETL_MAINSTATU表的,抽取的信息要能夠用箱號和提單號查詢各階段狀態(tài)。 ETL 設(shè)計(1) 場站進(jìn)出門信息場站進(jìn)出門信息涉及到的表如圖31,分別是進(jìn)出門信息表cogate_plconinfo、船期表pub_shipinfo、班輪信息表shipinfo、船信息表tran_vessel、報文信息表fileinfo。將場站進(jìn)出門信息導(dǎo)入集裝箱進(jìn)出口信息底賬表K_ETL_MAINSTATU表的字段對應(yīng)關(guān)系如表37,K_ETL_MAINSTATU表中沒有場站進(jìn)出門信息的字段默認(rèn)為空。OUT39。||decode(,null,39。)DATASOURCEcodesenderCTNYARDtrademarkTRUCKNO圖31 場站進(jìn)出門涉及的表及其關(guān)聯(lián)(2) 貨代報檢信息貨代報檢信息涉及到的表有報檢表new_agency_apply和船信息表tran_vessel如表38。)BLNOMSGTIME39。、。YYYYMMDDHH24MISS39。在關(guān)聯(lián)各表后要排除是散貨和提單號為空的訂艙信息。)BLNOMSGTIME貨代代碼a_cargoCODECARGO場站名codectnfieldCTNYARD申請方代碼applyerCODECARGO船公司Ship_agencyCODESHIPPER箱號ctnnoCTNNO申請日期apply_dateBLNOSTATUTIME、CTNNOSTATUTIME源表主鍵recordidRECORDID‘WEBDC’DATASOURCE(5)裝卸船信息裝卸船信息涉及表如圖34所示,圖也體現(xiàn)了表間關(guān)聯(lián)。IO提單號blnoBLNO信息提取時間sysdateBLNOMSGTIME裝卸狀態(tài)filedescCTNNOSTATUSOURCE源表主鍵plconinfoidCTNNOSOURCEID裝卸時間LOADORDISTIMECTINNOSTATUTIME 39。, 39。)DATASOURCE場站codesenderCTNYARD(6)中轉(zhuǎn)箱信息提取統(tǒng)計中轉(zhuǎn)箱量所使用的中轉(zhuǎn)箱信息涉及到裝卸船信息表coarri_plconinfo,如表313。由于出口裝箱單一個提單或箱可能因為反復(fù)修改重發(fā)導(dǎo)致以提單查詢時出現(xiàn)多條,這時就要在抽取時進(jìn)行篩選,如果有多條選最后發(fā)送的那條進(jìn)行提取信息。提取后載入出口裝箱單表K_T_COSTCO圖 35 出口裝箱單信息涉及的表及其關(guān)聯(lián)(8)進(jìn)出口箱量信息進(jìn)出口箱量信息所涉及的表與裝卸船信息一樣,即如圖34,只是用途不同所以提取字段不同。從中提取信息為 源表地址ccrespon_ctn_info_id、報文類型msgtype、報文表主鍵ileid、消息ID messageid、用戶名edi_username、船識別碼id_code 、船名vessel、航次voyage、箱號ctnno、回執(zhí)信息代碼respon_type_code、回執(zhí)信息respon_type_text、回執(zhí)時間msgtime。提取消息載入箱信息回執(zhí)底賬表K_ETL_CCBLNORESPONSE。所以這三種信息的提取用時間戳。在數(shù)據(jù)載入底賬時先執(zhí)行更新、再執(zhí)行刪除、最后執(zhí)行插入,并且在完成了更新和刪除一條記錄后,要將其在更新刪除記錄表中的記錄刪除。),然后每隔2小時從視圖中抽取數(shù)據(jù)。在開發(fā)底賬時,要盡量小的造成源表的修改,即對生產(chǎn)環(huán)境要做到零影響,也就是對源表做到只讀。所以,設(shè)計功能模塊如圖38。(4) 統(tǒng)計中轉(zhuǎn)箱量統(tǒng)計:輸入年份,統(tǒng)計該年份每一季度和一年的進(jìn)口中轉(zhuǎn)箱和出口中轉(zhuǎn)箱,并統(tǒng)計進(jìn)出口中轉(zhuǎn)量總和以及出口占總和的比率。登錄用戶名、密碼正確用戶對應(yīng)類型為q顯示查詢和統(tǒng)計只顯示查詢圖39 登錄模塊流程圖4 港口貨運(yùn)統(tǒng)計與決策支持系統(tǒng)的實現(xiàn) ETL轉(zhuǎn)換的實現(xiàn) ETL是通過建立視圖和使用kettle工具實現(xiàn)的。裝箱單O39。其中select后的列為需要抽取的字段。)。這五個信息是使用時間戳作為ETL增量更新的方法的,所以第一步要在底賬中獲取最大id即時間戳,以提單信息回執(zhí)為例,此步驟代碼為:SELECT DECODE(MAXID ,NULL,39。第三部將第二部抽取的數(shù)據(jù)載入底賬表,這里分兩種情況,一種像提單信息回執(zhí)和箱信息回執(zhí)這種只插入不跟新的情況,另一種是像進(jìn)出門信息和進(jìn)口艙單信息這種不僅要能插入而且要能更新的情況。第二部將數(shù)據(jù)載入底賬數(shù)據(jù)庫。新建數(shù)據(jù)庫連接如圖47。主界面一種是菜單欄里有查詢和統(tǒng)計兩項,還有一種沒有統(tǒng)計選項。例如網(wǎng)上訂艙的查詢語句為:select case BLNOSTATUSOURCE when 39。 when 39。 when 39。 when 39。 when 39。 else 39。and ctnno=39。其中m為輸入的箱號。圖412 中轉(zhuǎn)箱量統(tǒng)計界面 進(jìn)口TEU統(tǒng)計語句為:str_sql=select distinct 39。||ctntype,39。||ctntype,39。 and codedelivery=39。,39。) and substr(CTNNOSTATUTIME,1,4)=39。 as 時間,decode((sum(translate(ctntype,39。)))/20,null,0,(sum(translate(ctntype,39。)))/20) as 進(jìn)口TEU from K_T_ZZ t where IOSIGN=39。 and substr(CTNNOSTATUTIME,5,2) IN(39。,39。str_sql=str_sql+ union select distinct 39。||ctntype,39。||ctntype,39。 and codedelivery=39。,39。) and substr(CTNNOSTATUTIME,1,4)=39。 as 時間,decode((sum(translate(ctntype,39。)))/20,null,0,(sum(translate(ctntype,39。)))/20) as 進(jìn)口TEU from K_T_ZZ t where IOSIGN=39。 and substr(CTNNOSTATUTIME,5,2) IN(39。,39。str_sql=str_sql+ union select distinct 39。||ctntype,39。||ctntype,39。 and codedelivery=39。其中m是輸入的年份。||ctntype, 39。TEU箱量將40的大箱記做兩個箱子,20的小箱幾座一個;自然箱箱量是實際有幾個箱子就算幾個。(7) 出口裝箱單統(tǒng)計界面點擊統(tǒng)計目錄下的出口裝箱單統(tǒng)計進(jìn)入界面,如圖414。圖416 出口裝箱單貨代箱量統(tǒng)計界面 貨代箱量中可以按年統(tǒng)計,則填寫年份并且不寫月份;若要按月統(tǒng)計則出入年份和月份;若只輸入月份沒有輸入年份則會提示“請輸入年份”;若都沒有輸入就按確定則會提示“請輸入”。根據(jù)需求確定要提取的字段,根據(jù)字段確定涉及的表,再關(guān)聯(lián)表作為數(shù)據(jù)源以便抽取需要的數(shù)據(jù)。通過本文的研究,對形成數(shù)據(jù)底賬和ETL有了深入的了解,有利于今后研究數(shù)據(jù)倉庫和數(shù)據(jù)挖掘。這個雖然可以通過減少設(shè)定的時間差來解決,但這樣job就要頻繁執(zhí)行。致謝本論文最終能順利完成,首先應(yīng)感謝我的導(dǎo)師胡濱老師自始至終給予的關(guān)心和指導(dǎo)。在論文的寫作過程中,很多同學(xué)為我提供了很多幫助,值此機(jī)會向他們表示誠摯