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