吳進美 陳小泉 鄧增利 唐瑋 張志輝 匡勝
摘? ?要:針對之前數(shù)據(jù)抽取任務(wù)的零散、串行、任務(wù)多而難管理。設(shè)計實現(xiàn)一種多數(shù)據(jù)流并行抽取數(shù)據(jù),對異構(gòu)平臺及各種類型的數(shù)據(jù)源進行多數(shù)據(jù)流并行抽取,擴展了ETL(Extract,Transform and Load)現(xiàn)有的系統(tǒng)架構(gòu),為今后對海量數(shù)據(jù)的處理提供了統(tǒng)一高效的數(shù)據(jù)來源。
關(guān)鍵詞:數(shù)據(jù)倉庫? ETL? 元數(shù)據(jù)? 數(shù)據(jù)清洗
1? 數(shù)據(jù)源構(gòu)成
數(shù)據(jù)獲取和整合層主要實現(xiàn)從現(xiàn)有業(yè)務(wù)系統(tǒng)及外部數(shù)據(jù)來源中檢索/接收,湛江分公司裝備服務(wù)管理分析平臺(以下簡稱“平臺”)主要使用SAP DataService作為ETL工具,將Oracle數(shù)據(jù)庫、DB2數(shù)據(jù)庫、Excel文件、XML文件、DataService本身參數(shù)等不同系統(tǒng)、不同數(shù)據(jù)格式的數(shù)據(jù)經(jīng)過查詢、合并、拆分等操作,加載到平臺的YC134數(shù)據(jù)倉庫(DW)中。并且在這個過程中進行數(shù)據(jù)質(zhì)量的清洗和主數(shù)據(jù)的管理。對于數(shù)據(jù)源和數(shù)據(jù)目標(biāo),它們支持各種主流開放關(guān)系數(shù)據(jù)環(huán)境,包括MAXIMO系統(tǒng)、SAP系統(tǒng)或者其他業(yè)務(wù)系統(tǒng)。
2? ETL抽取數(shù)據(jù)設(shè)計要點
平臺設(shè)計多工作流并行抽取任務(wù)[1]是基于一個JOB任務(wù)對應(yīng)多個工作流(Work Flow)或者多個數(shù)據(jù)流(Data Flow),其中多個工作流并行抽取是整個JOB任務(wù)的核心,它可以內(nèi)嵌多個數(shù)據(jù)流,而數(shù)據(jù)流根據(jù)元數(shù)據(jù)庫[2]中的信息進行邏輯SQL的提取,經(jīng)過查詢(Query)、合并(merge)、層級(Hierarchy_Flattening)等處理并加載到數(shù)據(jù)倉庫中。由于數(shù)據(jù)抽取過程涉及到業(yè)務(wù)邏輯和不同系統(tǒng)環(huán)境等因素,所以在多工作流及數(shù)據(jù)流并行抽取過程中需要考慮跨平臺性和智能性。跨平臺一方面多工作流及數(shù)據(jù)流并行抽取本身需具備跨平臺性;另一方面對數(shù)據(jù)源系統(tǒng)和目標(biāo)數(shù)據(jù)庫所處的異構(gòu)環(huán)境進行支持。智能性是指并行抽取任務(wù)能夠根據(jù)預(yù)先設(shè)置的定時任務(wù)定時對數(shù)據(jù)進行抽取,并對在抽取過程中出現(xiàn)的異常及故障進行監(jiān)控和保留日志以便查詢。
3? ETL構(gòu)建設(shè)計
平臺的整體架構(gòu)采用以數(shù)據(jù)倉庫(DW)[3]為中心的技術(shù)架構(gòu),集成ETL技術(shù)、OLAP(on-Line Analytic Processing)技術(shù)、語義層(Designer)技術(shù)、報表設(shè)計展現(xiàn)技術(shù)和門戶技術(shù),有效地保障了數(shù)據(jù)的時效性、易用性和準(zhǔn)確性。
一般情況下分為ODS、DW兩部分,如果后期需要進一步深入分析,可以添加DM部分。通常從業(yè)務(wù)數(shù)據(jù)系統(tǒng)中到ODS做清洗,把數(shù)據(jù)源中重復(fù)使用到的數(shù)據(jù)(比如維表數(shù)據(jù))的信息整理出來,經(jīng)過跟業(yè)務(wù)部門認真反復(fù)驗證確認后進行臟數(shù)據(jù)的過濾、不完成數(shù)據(jù)的修正等;再從ODS到DW的過程轉(zhuǎn)換,進行數(shù)據(jù)不一致、數(shù)據(jù)粒度及業(yè)務(wù)規(guī)則計算等。清楚業(yè)務(wù)系統(tǒng)數(shù)據(jù)到ODS到DW間的邏輯關(guān)系,將其轉(zhuǎn)化為一個完整可執(zhí)行的ETL過程,進行各種操作和流程對數(shù)據(jù)進行清洗和轉(zhuǎn)換,并處理在轉(zhuǎn)換中出現(xiàn)的異常。此外ETL工具為方便管理和追蹤任務(wù)執(zhí)行情況還提供ETL過程運行時詳盡的log日志功能。
3.1 數(shù)據(jù)抽取過程設(shè)計
ETL過程中無論是抽取、清理、轉(zhuǎn)換都可以認為是數(shù)據(jù)轉(zhuǎn)換過程。ETL過程的一般數(shù)據(jù)轉(zhuǎn)換流程為:(1)從數(shù)據(jù)源中獲取業(yè)務(wù)數(shù)據(jù)及基礎(chǔ)數(shù)據(jù)等;(2)使用轉(zhuǎn)換處理獲取的數(shù)據(jù)并輸出;(3)將生成的輸出結(jié)果集載入到目標(biāo)數(shù)據(jù)庫。數(shù)據(jù)轉(zhuǎn)換分成三類:數(shù)據(jù)清洗、模式轉(zhuǎn)換、層級轉(zhuǎn)換;數(shù)據(jù)清洗是過濾掉業(yè)務(wù)數(shù)據(jù)中不需要做分析統(tǒng)計的數(shù)據(jù),比如不完成、錯誤、重復(fù)、沒有分析意義的數(shù)據(jù)等;模式轉(zhuǎn)換是將抽取的數(shù)據(jù)源進行數(shù)據(jù)關(guān)聯(lián)、數(shù)據(jù)粒度、業(yè)務(wù)計算等轉(zhuǎn)換過程;層級轉(zhuǎn)換一般是對基礎(chǔ)數(shù)據(jù)中有層級關(guān)系的邏輯數(shù)據(jù)進行樹結(jié)構(gòu)層級轉(zhuǎn)換。
數(shù)據(jù)抽取一般有兩種形式:增量抽取和全量抽取。由于增量數(shù)據(jù)集一般較少,增量抽取不但降低了數(shù)據(jù)的傳輸量,同時大大提高了抽取過程中的效率。數(shù)據(jù)抽取過程一般在業(yè)務(wù)系統(tǒng)訪問量最低的時間執(zhí)行,比如是夜間或者休息日,以降低業(yè)務(wù)系統(tǒng)訪問的峰值負荷。這意味著ETL過程的執(zhí)行時間粒度至少是以天為單位。采取合理的增量抽取方式,可以降低數(shù)據(jù)抽取的負荷,提高抽取任務(wù)的效率,可以增大ETL執(zhí)行頻率[4],提升數(shù)據(jù)的時效性。此外數(shù)據(jù)倉庫中要求保存歷史數(shù)據(jù),如果每次進行重載,這些保存的歷史數(shù)據(jù)將會丟失,這也要求ETL工具具備增量抽取數(shù)據(jù)能力。
增量抽取數(shù)據(jù)方法目前有基于日志的抽取、基于觸發(fā)器的抽取、基于應(yīng)用程序的抽取、基于時間戳的抽取、基于增量快照的抽取等幾種方法。平臺主要使用基于時間戳的增量抽取方法,基于時間戳的方法必須依賴業(yè)務(wù)系統(tǒng)的支出。
3.2 數(shù)據(jù)驗證過程設(shè)計
在項目的業(yè)務(wù)數(shù)據(jù)分析階段,業(yè)務(wù)歸屬人員和技術(shù)人員將合作校對ETL過程抽取數(shù)據(jù)的準(zhǔn)確性及有效性。包括對模糊的數(shù)據(jù)轉(zhuǎn)換、丟失的數(shù)據(jù)恢復(fù)、業(yè)務(wù)相關(guān)的數(shù)據(jù)問題如數(shù)據(jù)源增強。
3.3 數(shù)據(jù)裝載過程設(shè)計
數(shù)據(jù)裝載主要將加工處理后的業(yè)務(wù)數(shù)據(jù)加載到數(shù)據(jù)倉庫中的目標(biāo)表,是ETL過程的最后步驟。系統(tǒng)通過JDBC連接數(shù)據(jù)庫進行直連數(shù)據(jù)庫方式進行數(shù)據(jù)裝載,充分體現(xiàn)高效性。可以隨時調(diào)整數(shù)據(jù)抽取方式,靈活的集成裝載到其他數(shù)據(jù)倉庫中。
3.4 作業(yè)運行
ETL過程可以通過處理鏈或JOB管理工具進行調(diào)用,處理鏈或JOB管理工具可以預(yù)先定義調(diào)用的時間(如每天凌晨幾點)、周期,并且所有調(diào)用過程都將執(zhí)行詳情記錄到日志。
4? 結(jié)語
通過DataService建立一個集成、共享、統(tǒng)一的數(shù)據(jù)管理平臺,整合不同來源的數(shù)據(jù)、發(fā)揮數(shù)據(jù)的價值、提高數(shù)據(jù)的分析能力及準(zhǔn)確性,為各層人員提高多維數(shù)據(jù)查詢統(tǒng)計、信息分析及報表生成;通過面向主題的數(shù)據(jù)分析,發(fā)現(xiàn)問題、找出規(guī)律、追溯源頭,為管理層決策管理提出信息、知識支持。后期在現(xiàn)有報表體系的基礎(chǔ)上,提高報表數(shù)據(jù)可靠性,為決策層提供更加可靠的報表數(shù)據(jù),并為作業(yè)區(qū)層次的一線工作人員規(guī)范性流程工作提供數(shù)據(jù)依據(jù)。
參考文獻
[1] 韓京宇,徐立臻,董逸生.ETL執(zhí)行的流水線優(yōu)化[J].小型微型計算機系統(tǒng),2005,26(6):1013-1017.
[2] 杜永友.構(gòu)建基于工作流引擎和元數(shù)據(jù)驅(qū)動的數(shù)據(jù)倉庫ETL工具[D].四川大學(xué),2004.
[3] 柳鶯.數(shù)據(jù)倉庫技術(shù)研究和應(yīng)用探討[J].計算機應(yīng)用,2001(2):69-70.
[4] 吳遠紅.ETL執(zhí)行過程的優(yōu)化研究[J].計算機科學(xué),2007,34(1):81-83.