葉敏
【摘要】ETL是“Extract”,“Transform”和“Load”3個(gè)單詞的首字母縮寫,是數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的意思,一般將ETL簡(jiǎn)寫為數(shù)據(jù)抽取。ETL是構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)挖掘的很重要的一部分。本文通過(guò)介紹ETL技術(shù)架構(gòu),分析常見ETL工具,討論了ETL技術(shù)對(duì)商業(yè)領(lǐng)域的意義。ETL技術(shù)很大程度上提高了數(shù)據(jù)輸入的質(zhì)量,為大數(shù)據(jù)分析和數(shù)據(jù)挖掘提供巨大的支持。
【關(guān)鍵詞】ETL 數(shù)據(jù)抽取 數(shù)據(jù)倉(cāng)庫(kù)
數(shù)據(jù)信息是現(xiàn)代企業(yè)的重要戰(zhàn)略資源,是企業(yè)進(jìn)行科學(xué)決策和分析的基礎(chǔ)。如今,大多數(shù)企業(yè)用大量的時(shí)間和資金來(lái)構(gòu)建事務(wù)處理OLTP的業(yè)務(wù)系統(tǒng)和辦公自動(dòng)化OA系統(tǒng),用來(lái)記錄事務(wù)處理的各種相關(guān)數(shù)據(jù),有太多的潛在價(jià)值數(shù)據(jù)沒(méi)有得到合理利用。企業(yè)如何通過(guò)運(yùn)用各種信息技術(shù)手段,把數(shù)據(jù)轉(zhuǎn)換為有用的信息和作為決策依據(jù),已經(jīng)成了提高其核心競(jìng)爭(zhēng)力的主要瓶頸。ETL則是主要的一個(gè)技術(shù)手段,為企業(yè)進(jìn)行大數(shù)據(jù)分析和數(shù)據(jù)挖掘提供重要的支持。
一、ETL體系架構(gòu)
下圖為ETL體系結(jié)構(gòu),它是主流ETL產(chǎn)品框架的主要組成部分。ETL是指從源系統(tǒng)中提取數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù)為一個(gè)標(biāo)準(zhǔn)的格式,并加載數(shù)據(jù)到目標(biāo)數(shù)據(jù)存儲(chǔ)區(qū),通常是數(shù)據(jù)倉(cāng)庫(kù)。
(一)數(shù)據(jù)抽取
數(shù)據(jù)抽取就是從外部不同的數(shù)據(jù)源中抽取數(shù)據(jù),需要確認(rèn)數(shù)據(jù)的來(lái)源和以及將到的數(shù)據(jù)抽取技術(shù)。數(shù)據(jù)抽取分為數(shù)據(jù)增量抽取和全量抽取。增量抽取一般有4種抽取模式:①時(shí)間戳方式:通過(guò)比較需要抽取的數(shù)據(jù)庫(kù)系統(tǒng)時(shí)間戳與抽取源表的時(shí)間戳字段的值來(lái)決定抽取哪些數(shù)據(jù),這種方式需要源表中存在一個(gè)或多個(gè)時(shí)間戳字段,并且其值隨著新紀(jì)錄的增加而不斷增加,執(zhí)行數(shù)據(jù)抽取時(shí),程序通過(guò)時(shí)間戳對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,抽取設(shè)定的時(shí)間戳的數(shù)據(jù);②全表對(duì)比方式:每次從源表中讀取所有記錄,然后逐條比較源表和目標(biāo)表的記錄,將新增和修改的記錄過(guò)濾讀取出來(lái),采用MD5校驗(yàn)碼。③觸發(fā)器方式:根據(jù)抽取要求,要建立插入、修改和刪除3個(gè)觸發(fā)器,該方法需要用戶在源數(shù)據(jù)庫(kù)中有創(chuàng)建觸發(fā)器和臨時(shí)表的權(quán)限,觸發(fā)器可以捕獲新新增的數(shù)據(jù)到臨時(shí)表中,在進(jìn)行抽取時(shí),程序會(huì)自動(dòng)從臨時(shí)表中讀取新增的數(shù)據(jù)。④志表方式:該方法是在數(shù)據(jù)庫(kù)中創(chuàng)建業(yè)務(wù)日志表,當(dāng)系統(tǒng)監(jiān)控的業(yè)務(wù)數(shù)據(jù)發(fā)生特定的變化時(shí),日志表內(nèi)容會(huì)記錄更新。日志表的維護(hù)需要編寫特定的程序代碼來(lái)完成。
(二)數(shù)據(jù)轉(zhuǎn)換
數(shù)據(jù)轉(zhuǎn)換是ETL過(guò)程中最為繁瑣的部分,主要任務(wù)包括數(shù)據(jù)類型轉(zhuǎn)換、數(shù)據(jù)格式轉(zhuǎn)換等,可以在數(shù)據(jù)抽取過(guò)程中利用關(guān)系數(shù)據(jù)庫(kù)的特性進(jìn)行轉(zhuǎn)換和在ETL引擎工具中完成。
一般來(lái)說(shuō),從數(shù)據(jù)源中抽取的數(shù)據(jù)是不符合入數(shù)據(jù)倉(cāng)的要求,有必要對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換、清洗、拆分、匯總等處理,解決數(shù)據(jù)格式的不一致、數(shù)據(jù)輸入錯(cuò)誤、數(shù)據(jù)不完整等問(wèn)題。進(jìn)行數(shù)據(jù)轉(zhuǎn)換的原因有以下幾點(diǎn):①數(shù)據(jù)不完整性:在數(shù)據(jù)庫(kù)中有信息缺失,從而導(dǎo)致數(shù)據(jù)的不完整性。解決的辦法是找到錯(cuò)誤信息進(jìn)行補(bǔ)全②數(shù)據(jù)格式錯(cuò)誤:指的是缺失數(shù)據(jù)值或數(shù)據(jù)超出數(shù)據(jù)范圍的問(wèn)題,解決辦法是定義域完整性進(jìn)行格式約束③數(shù)據(jù)不一致性:表現(xiàn)為主表與子表的數(shù)據(jù)不能匹配,一般原因是缺少外鍵的定義,需要找由業(yè)務(wù)部門對(duì)數(shù)據(jù)進(jìn)行核對(duì),修正后再進(jìn)行抽取。
(三)數(shù)據(jù)加載
數(shù)據(jù)加載一般是ETL的最后一步。是值將抽取和轉(zhuǎn)換的數(shù)據(jù)從數(shù)據(jù)臨時(shí)表或者文件中導(dǎo)入到指定的數(shù)據(jù)倉(cāng)庫(kù),裝載數(shù)據(jù)的最佳方法一般是取決于所執(zhí)行操作的類型以及需要裝入多少數(shù)據(jù)。有兩種裝載方式:①一種是直接SQL語(yǔ)句進(jìn)行操作.②采用關(guān)系數(shù)據(jù)庫(kù)特有的裝載工具批量進(jìn)行裝載,甚至可以采用多程并行處理方式加載數(shù)據(jù),提高程序運(yùn)行效率。
二、ETL常見工具
當(dāng)選擇ETL產(chǎn)品時(shí),最關(guān)鍵的因素是考慮這個(gè)產(chǎn)品在你的指定的環(huán)境和配置下,這個(gè)產(chǎn)品的執(zhí)行性能。當(dāng)你選擇一個(gè)ETL工具時(shí),需要考慮選中工具的因素有:(1)能夠支持分布的數(shù)據(jù)整合需要并且要允許你借助于手頭的資源和技術(shù)(2)數(shù)據(jù)整合工具的使用不應(yīng)該千擾你現(xiàn)在的環(huán)境,而是應(yīng)該充分利用由RDBMS和SQL提供的能力和功能。
通過(guò)ETL工具,實(shí)現(xiàn)ETL數(shù)據(jù)抽取,主要是原因是維護(hù)容易。目前市場(chǎng)上主流的ETL工具可以分為兩大類:一類是專業(yè)ETL廠商的產(chǎn)品,這類產(chǎn)品一般都具備較完善的體系結(jié)構(gòu)和久經(jīng)考驗(yàn)的產(chǎn)品,產(chǎn)品的功能之復(fù)雜和詳盡,但是能令初次接觸的人膛目,并且高昂的價(jià)格也會(huì)使一般用戶望而卻步;另一類是整體數(shù)據(jù)倉(cāng)庫(kù)方案供應(yīng)商,他們?cè)谔峁?shù)據(jù)倉(cāng)庫(kù)存儲(chǔ)、設(shè)計(jì)、展現(xiàn)工具的同時(shí)也提供相應(yīng)的ETL工具,這類產(chǎn)品一般對(duì)自己廠商的相關(guān)產(chǎn)品有很好的支持并能發(fā)揮出其最大效率,但結(jié)構(gòu)相對(duì)封閉,對(duì)其他廠商產(chǎn)品的支持也很有限。專業(yè)ETL廠商和產(chǎn)品包括ASCENTIAL公司的DATASTAGEXE,SAGENT公司SOLUTION和INFORMATICA公司的產(chǎn)品,整體方案提供商和產(chǎn)品則包括ORACLE公司的WAREHOUSEBUILDER和IBM公司的WAREHOUSE MANAGER。
三、ETL技術(shù)在商業(yè)領(lǐng)域的作用
在商業(yè)領(lǐng)域中,商業(yè)智能(Business Intelligence)的關(guān)鍵是從許多的來(lái)自不同的企業(yè)運(yùn)作系統(tǒng)的數(shù)據(jù),經(jīng)過(guò)提取和清理獲得有用并且準(zhǔn)確的數(shù)據(jù),經(jīng)ETL過(guò)程,合并到企業(yè)級(jí)的數(shù)據(jù)倉(cāng)庫(kù)里,從而得到企業(yè)數(shù)據(jù)的一個(gè)全局視圖,為管理者決策過(guò)程提供支持。ETL在整個(gè)BI過(guò)程中起到承上啟下的作用,ETL的成敗將直接影響整個(gè)BI項(xiàng)目的成功與否。ETL技術(shù)可以使得商業(yè)分析速度加快,使公司的業(yè)務(wù)獲得決策更多的決策時(shí)間。隨著ETL技術(shù)成本下降和計(jì)算能力的增長(zhǎng),分析技術(shù)開始從內(nèi)存與存儲(chǔ)價(jià)格的下降中獲益。同時(shí),隨著開源軟件挖掘出更有價(jià)值的數(shù)據(jù),從海量的數(shù)據(jù)中發(fā)現(xiàn)之前用戶的真正搜索需要的數(shù)據(jù),支撐決策。
四、總結(jié)
本文介紹了ETL的體系結(jié)構(gòu)以及它的幾個(gè)處理過(guò)程,并詳細(xì)分析了ETL技術(shù)在數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換和數(shù)據(jù)加載等方面的具體實(shí)現(xiàn)過(guò)程。通過(guò)介紹了ETL的常用工具以及ETL技術(shù)對(duì)商業(yè)智能的作用。ETL在整個(gè)BI過(guò)程中起到承上啟下的作用,這部分工作質(zhì)量的好壞直接決定了數(shù)據(jù)的輸入資料,把握好ETL過(guò)程中的每一個(gè)步驟,才能為接下來(lái)的數(shù)據(jù)分析打下堅(jiān)實(shí)的基礎(chǔ)。