劉森,李英勃
(中國汽車技術(shù)研究中心,天津 300300)
汽車行業(yè)數(shù)據(jù)倉庫應(yīng)用敏捷型ETL過程的研究
劉森,李英勃
(中國汽車技術(shù)研究中心,天津300300)
隨著中國汽車行業(yè)的發(fā)展,中國的汽車市場正在發(fā)生著劇烈的變化。為應(yīng)改變,汽車企業(yè)也越來越重視數(shù)據(jù)的分析,通過數(shù)據(jù)分析為企業(yè)戰(zhàn)略的調(diào)整提供科學(xué)依據(jù)。數(shù)據(jù)倉庫建設(shè)作為數(shù)據(jù)分析應(yīng)用的基礎(chǔ)得到了重視,而ETL過程決定了數(shù)據(jù)質(zhì)量及數(shù)據(jù)更新速度,更成為了其中的關(guān)鍵要素。
目前數(shù)據(jù)倉庫建設(shè)中采用的傳統(tǒng)ETL方法存在過程復(fù)雜、抽取速度慢等問題。在敏捷BI系統(tǒng)的帶動下,建立敏捷型ETL過程成為新選擇,但是是否能夠適用于所有數(shù)據(jù)結(jié)構(gòu),得到更高效率的ETL過程,還有待研究。
傳統(tǒng)的BI系統(tǒng)的ETL過程都是從各種數(shù)據(jù)源抽取數(shù)據(jù)開始,經(jīng)過對數(shù)據(jù)清理,轉(zhuǎn)化后進入數(shù)據(jù)倉庫。數(shù)據(jù)集市從數(shù)據(jù)倉庫取得數(shù)據(jù),轉(zhuǎn)變成適合的格式,經(jīng)過BI軟件或數(shù)據(jù)可視化軟件的處理和計算,變成合適的圖表顯示給用戶。這種ETL過程需要經(jīng)過先將數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉庫再從數(shù)據(jù)倉庫中導(dǎo)出的過程,需要用較長時間。
隨著敏捷BI的興起,敏捷ETL方式約簡了數(shù)據(jù)處理過程。敏捷BI軟件整合了數(shù)據(jù)ETL工具,從而可以越過數(shù)據(jù)進入數(shù)據(jù)倉庫的過程,實現(xiàn)了數(shù)據(jù)源與數(shù)據(jù)分析工具,展示工具的直接連接。這種跳過數(shù)據(jù)倉庫而直接把數(shù)據(jù)由數(shù)據(jù)源導(dǎo)入數(shù)據(jù)集市的ETL過程稱作敏捷型ETL過程。
本文使用汽車行業(yè)的銷量數(shù)據(jù),利用BI軟件Tableau對傳統(tǒng)型ETL過程和敏捷型ETL過程的優(yōu)缺點進行評估。Tableau是美國Tableau軟件公司開發(fā)的一款敏捷型BI工具軟件,其數(shù)據(jù)展現(xiàn)方式靈活,是當(dāng)期比較熱門的敏捷BI工具。
2.1汽車行業(yè)數(shù)據(jù)特點
汽車行業(yè)銷量數(shù)據(jù)特點有四,首先是維度多。以汽車市場產(chǎn)銷量為例。產(chǎn)銷量的數(shù)據(jù)包含有車型分類、車型參數(shù)、發(fā)動機參數(shù)、制造商信息、消費者信息、銷售地址信息、產(chǎn)銷量等幾大類信息。每一類中,又包含了多條維度信息。維度信息多達40余條。其次,維度信息不斷變化。首先是車型的變化,每個月都有新的車型出現(xiàn),每個車型都有自己單獨的配置和分類信息。第三,汽車分類的標(biāo)準(zhǔn)也在不斷變化。由于汽車市場競爭激烈,變化快,行業(yè)的標(biāo)準(zhǔn)始終處在不斷的變化中。例如以前車型級別的分類標(biāo)準(zhǔn),經(jīng)過十多年的時間,已經(jīng)不再適用于當(dāng)前的市場格局,很多定義也發(fā)生了變化。第四是數(shù)據(jù)量大,僅銷量,每月就有一百多萬條數(shù)據(jù)。最后是數(shù)據(jù)來源復(fù)雜,清理難度大。由于很多信息有各自不同的來源,一些同樣的信息表達卻不一樣。
基于汽車市場的數(shù)據(jù)特征,ETL過程必須能夠清理大量數(shù)據(jù),并連帶著多維度數(shù)據(jù)一并錄入到用于展示的數(shù)據(jù)市場中;同時,對于發(fā)生了變化的維度,其變化必須要體現(xiàn)到最后的圖表中。
2.2傳統(tǒng)ETL過程設(shè)計
為比較兩種ETL過程效率,首先搭建為汽車行業(yè)數(shù)據(jù)倉庫設(shè)計的傳統(tǒng)ETL過程。這個ETL過程主要包含以下幾個步驟:
①在數(shù)據(jù)源篩選新增數(shù)據(jù)
②從數(shù)據(jù)源抽取新增數(shù)據(jù)
③轉(zhuǎn)變數(shù)據(jù)格式,增添計算字段
④更新維度表
⑤將數(shù)據(jù)加入事實表
⑥從數(shù)據(jù)倉庫取出數(shù)據(jù),更新CUBE
這種ETL過程的優(yōu)勢是保證數(shù)據(jù)倉庫的數(shù)據(jù)完整、統(tǒng)一、可靠。維度表可以保存歷史信息,所以如果維度表有變化,最終的圖表不但能以變化后的維度來顯示,還能以任一歷史時間點的狀態(tài)來顯示。此外它還能顯示這個維度整個的歷史變化軌跡。
搭建的傳統(tǒng)ETL過程分為三層結(jié)構(gòu),用存儲過程將這幾個層次聯(lián)系起來,結(jié)構(gòu)圖如圖1所示。第一層為ETL層,主要用來儲存從其他系統(tǒng)中來的數(shù)據(jù)。在實際應(yīng)用的系統(tǒng)中,包括專家分類系統(tǒng),汽車生產(chǎn)商資料庫以及汽車車型參數(shù)系統(tǒng)。ETL過程開始后,系統(tǒng)將探測到各個系統(tǒng)的新增數(shù)據(jù),然后將這些新數(shù)據(jù)拷貝到ETL層的表中。第二層為ODS(Operation Data Stage)層,存儲經(jīng)過清洗、轉(zhuǎn)化、計算后的數(shù)據(jù)。當(dāng)新增數(shù)據(jù)被拷貝到ETL層后,存儲過程將會開始對數(shù)據(jù)進行清理,符合要求并且有必要的維度信息的數(shù)據(jù)將會被拷貝進ODS層,同時完成數(shù)據(jù)格式的轉(zhuǎn)換以及新字段的計算。不符合要求的數(shù)據(jù),被拷貝進專門的表中,等待專業(yè)人士分析,清理。最后一層為DM(Data Management)層,主要儲存歷史數(shù)據(jù),也就是我們數(shù)據(jù)倉庫的主體結(jié)構(gòu)。清理、轉(zhuǎn)換后,數(shù)據(jù)將會被ETL過程從ODS層合并到DM層中。
圖1 傳統(tǒng)ETL過程
2.3敏捷型ETL過程設(shè)計
設(shè)計敏捷型ETL過程,主要以視圖代替表,同樣建成類似數(shù)據(jù)倉庫的結(jié)構(gòu),包括事實視圖和維度視圖,組成星形結(jié)構(gòu)的數(shù)據(jù)視圖倉庫,敏捷型ETL過程結(jié)果如圖2。
首先,新的ETL過程依然保留有傳統(tǒng)ETL過程的層級結(jié)構(gòu)。用于保存新增數(shù)據(jù)的ETL層以及存儲過程被保留下來,以避免頻繁的數(shù)據(jù)查詢可能會影響到正常系統(tǒng)的應(yīng)用。但敏捷型ETL過程的ETL層,區(qū)別于傳統(tǒng)的ETL層在數(shù)據(jù)輸入前被清空,敏捷型ETL層包含有以前的歷史數(shù)據(jù)。也就是,ETL層表里的數(shù)據(jù),是所有經(jīng)過篩選被傳進ETL系統(tǒng)的原始數(shù)據(jù)的累積。
然后,建立ODS層。傳統(tǒng)ETL的ODS層由實表組成,而敏捷型ETL過程的OD采用視圖的方式。為每一個維度建立一個視圖,由視圖將數(shù)據(jù)從ETL數(shù)據(jù)層中取出,進行清洗、轉(zhuǎn)換,并且加入計算字段。所以維度表視圖建立起來后,建立事實表的視圖。由于視圖里建立唯一ID字段并不容易,所以需要盡力借助已有的ID來進行連接。我們這里使用汽車的車輛型號作為事實視圖連接各個維度視圖的連接字段。由于車輛型號是每種車輛型號的唯一判斷字段,所以用它來連接事實視圖和各個維度視圖不會造成數(shù)據(jù)的重復(fù)。
因為敏捷型ETL過程沒有數(shù)據(jù)倉庫,也就沒有最后的DM層來儲存歷史數(shù)據(jù)。最后ODS層的各個視圖就起到了數(shù)據(jù)倉庫的作用。當(dāng)ODS層的各視圖建立起來,我們就可以使用Tableau直接從視圖中抽取數(shù)據(jù)。
圖2 敏捷型ETL過程圖
為了測試性能,只設(shè)計了一個數(shù)據(jù)集市,包含這個數(shù)據(jù)倉庫的所有數(shù)據(jù)。兩種ETL過程完成后,均采用兩種方法讓Tableau從數(shù)據(jù)倉庫DM層中抽取數(shù)據(jù)。第一種是用Tableau直接抽取,在編輯Tableau數(shù)據(jù)源的時候,將DM層的表按照設(shè)計的星形結(jié)構(gòu)連接起來,然后直接抽?。涣硪环N方法是建立一個視圖,按照設(shè)計好的星形結(jié)構(gòu)查詢數(shù)據(jù),然后Tableau直接抽取這個視圖的數(shù)據(jù)。
以部分車型一個月的銷量數(shù)據(jù)為樣例,使用這四種ETL過程以及Tableau從數(shù)據(jù)倉庫中抽取數(shù)據(jù)集市的時間情況。詳細消耗的時間情況見表1。
可以看出,Tableau本身的數(shù)據(jù)連接系統(tǒng)是比較高效的,不論是傳統(tǒng)ETL還是敏捷型的ETL,將星形結(jié)構(gòu)直接放到Tableau數(shù)據(jù)源編輯器中抽取的效率都高于使用Tableau從視圖中抽取數(shù)據(jù)的效率。
表1 ETL執(zhí)行時間對比表
從兩種ETL過程的對比來看可以發(fā)現(xiàn),雖然敏捷型ETL的開發(fā)節(jié)省了把數(shù)據(jù)導(dǎo)入數(shù)據(jù)倉庫的過程,但由于Tableau抽取數(shù)據(jù)庫視圖本身的低效率,其抽取過程并不比傳統(tǒng)的ETL過程更省時間。而一個成熟高效的傳統(tǒng)ETL過程本身用于數(shù)據(jù)清理、轉(zhuǎn)換、插入的時間也并不多。敏捷型ETL雖然能夠省去數(shù)據(jù)插入這一步,但數(shù)據(jù)的清理、轉(zhuǎn)換這些步驟卻無法省去,反而在視圖中完成這些工作的效率沒有在存儲過程中高。所以兩種ETL抽取過程比較起來,除非數(shù)據(jù)清理轉(zhuǎn)換工作非常簡單而數(shù)據(jù)量非常大,導(dǎo)致ETL過程需要用比進行數(shù)據(jù)清理轉(zhuǎn)換工作多更多的時間來進行數(shù)據(jù)的輸入工作,否則無論是直接抽取數(shù)據(jù)還是從視圖中抽取數(shù)據(jù),傳統(tǒng)ETL的效率都比敏捷型ETL的效率要高。
比較而言,敏捷型ETL開發(fā)更為簡單,取消了清洗后的數(shù)據(jù)錄入到數(shù)據(jù)倉庫表的步驟,使數(shù)據(jù)能夠更實時地反映數(shù)據(jù)的變化,尤其適用于清洗、轉(zhuǎn)化過程比較簡單大量數(shù)據(jù)。特別是數(shù)據(jù)源比較單一的數(shù)據(jù),可以省略掉導(dǎo)入ETL層的步驟,直接寫ODS層的視圖,從而實現(xiàn)數(shù)據(jù)集市數(shù)據(jù)與數(shù)據(jù)源的實時連接。
但是,敏捷型ETL開發(fā)的缺點也很明顯。首先,傳統(tǒng)數(shù)據(jù)倉庫可以保留歷史數(shù)據(jù)變化,但由于視圖不接受參數(shù),敏捷型ETL更關(guān)注當(dāng)前數(shù)據(jù)狀態(tài)。其次,如果數(shù)據(jù)清洗、轉(zhuǎn)化復(fù)雜,例如需要新建ID或者連接字段,或者需要聚合數(shù)據(jù)或者進行復(fù)雜的數(shù)據(jù)計算,那么就不適宜或者根本不能采用敏捷型的ETL過程。最后敏捷型ETL過程,雖然省去了數(shù)據(jù)進入數(shù)據(jù)倉庫的時間,但是用于采用了視圖,降低了數(shù)據(jù)清理、連接、轉(zhuǎn)換和計算的效率,數(shù)據(jù)進入數(shù)據(jù)集市的時間要比傳統(tǒng)的數(shù)據(jù)集市抽取時間更長。
總而言之,是否要采取敏捷型的ETL過程,需要根據(jù)實際的數(shù)據(jù)情況來定。如果數(shù)據(jù)源單一,數(shù)據(jù)清理,轉(zhuǎn)化的步驟并不繁雜,數(shù)據(jù)量反而比較大,那敏捷型ETL過程以及與之相適應(yīng)的數(shù)據(jù)倉庫就是一個不錯的選擇。如果數(shù)據(jù)源復(fù)雜,清理轉(zhuǎn)換工作量大而且計算復(fù)雜,則采取傳統(tǒng)的數(shù)據(jù)倉庫以及ETL過程是一個更為明智的選擇。
[1]張瑞.ETL數(shù)據(jù)抽取研究綜述[J].軟件導(dǎo)刊,2010(10):164-165.
[2]陳玉東,姚青.基于商務(wù)智能的流程評估系統(tǒng)中ETL的研究[J].計算機工程與設(shè)計,2014,35(8):2752-2756.
[3]畢錕.ETL系統(tǒng)的設(shè)計及其研究[J].軟件導(dǎo)報,2010,9(5):172-175.
[4]范金花.報表系統(tǒng)中ETL通用架構(gòu)的設(shè)計與研究[J].計算機技術(shù)與發(fā)展,2009,19(6):202-209.
Data Warehouse;ETL;Agile BI;Agile ETL
Research on Applying Agile ETL Process on Automotive Data Warehouse
LIU Sen,LI Ying-bo
(CATARC,Tianjin 300300)
1007-1423(2015)34-0003-04
10.3969/j.issn.1007-1423.2015.34.001
劉森(1988-),女,河北石家莊人,工程師,碩士,研究方向為商務(wù)智能與數(shù)據(jù)挖掘
2015-11-10
2015-11-20
敏捷BI為用戶提供了新型ETL方式,建立敏捷型的ETL過程,即不通過數(shù)據(jù)倉庫,使用ETL工具由數(shù)據(jù)源直接抽取經(jīng)過轉(zhuǎn)換后的數(shù)據(jù)。以汽車行業(yè)的數(shù)據(jù)為例,提出一種敏捷型ETL過程的建立方法,即在數(shù)據(jù)庫中以原始數(shù)據(jù)為基礎(chǔ)建立視圖,使用ETL工具從這些視圖中取得數(shù)據(jù),并通過和傳統(tǒng)ETL過程的對比評估這種方式的效率。
數(shù)據(jù)倉庫;ETL;敏捷BI;敏捷型ETL
李英勃(1983-),男,天津人,碩士,研究方向為商務(wù)智能與數(shù)據(jù)挖掘
Agile BI offers new ETL tools to users which is building agile ETL,it means not using data warehouse but just using ETL tools to exact transformed data from data sources.Takes automotive market’s data as an example,introduces an agile ETL process method,uses ETL tools to extract data from views which is built on raw data tables,evaluates the efficiency of this method by comparing it with traditional ETL process.