劉森,李英勃
(中國汽車技術研究中心,天津 300300)
汽車行業數據倉庫應用敏捷型ETL過程的研究
劉森,李英勃
(中國汽車技術研究中心,天津300300)
隨著中國汽車行業的發展,中國的汽車市場正在發生著劇烈的變化。為應改變,汽車企業也越來越重視數據的分析,通過數據分析為企業戰略的調整提供科學依據。數據倉庫建設作為數據分析應用的基礎得到了重視,而ETL過程決定了數據質量及數據更新速度,更成為了其中的關鍵要素。
目前數據倉庫建設中采用的傳統ETL方法存在過程復雜、抽取速度慢等問題。在敏捷BI系統的帶動下,建立敏捷型ETL過程成為新選擇,但是是否能夠適用于所有數據結構,得到更高效率的ETL過程,還有待研究。
傳統的BI系統的ETL過程都是從各種數據源抽取數據開始,經過對數據清理,轉化后進入數據倉庫。數據集市從數據倉庫取得數據,轉變成適合的格式,經過BI軟件或數據可視化軟件的處理和計算,變成合適的圖表顯示給用戶。這種ETL過程需要經過先將數據導入數據倉庫再從數據倉庫中導出的過程,需要用較長時間。
隨著敏捷BI的興起,敏捷ETL方式約簡了數據處理過程。敏捷BI軟件整合了數據ETL工具,從而可以越過數據進入數據倉庫的過程,實現了數據源與數據分析工具,展示工具的直接連接。這種跳過數據倉庫而直接把數據由數據源導入數據集市的ETL過程稱作敏捷型ETL過程。
本文使用汽車行業的銷量數據,利用BI軟件Tableau對傳統型ETL過程和敏捷型ETL過程的優缺點進行評估。Tableau是美國Tableau軟件公司開發的一款敏捷型BI工具軟件,其數據展現方式靈活,是當期比較熱門的敏捷BI工具。
2.1汽車行業數據特點
汽車行業銷量數據特點有四,首先是維度多。以汽車市場產銷量為例。產銷量的數據包含有車型分類、車型參數、發動機參數、制造商信息、消費者信息、銷售地址信息、產銷量等幾大類信息。每一類中,又包含了多條維度信息。維度信息多達40余條。其次,維度信息不斷變化。首先是車型的變化,每個月都有新的車型出現,每個車型都有自己單獨的配置和分類信息。第三,汽車分類的標準也在不斷變化。由于汽車市場競爭激烈,變化快,行業的標準始終處在不斷的變化中。例如以前車型級別的分類標準,經過十多年的時間,已經不再適用于當前的市場格局,很多定義也發生了變化。第四是數據量大,僅銷量,每月就有一百多萬條數據。最后是數據來源復雜,清理難度大。由于很多信息有各自不同的來源,一些同樣的信息表達卻不一樣。
基于汽車市場的數據特征,ETL過程必須能夠清理大量數據,并連帶著多維度數據一并錄入到用于展示的數據市場中;同時,對于發生了變化的維度,其變化必須要體現到最后的圖表中。
2.2傳統ETL過程設計
為比較兩種ETL過程效率,首先搭建為汽車行業數據倉庫設計的傳統ETL過程。這個ETL過程主要包含以下幾個步驟:
①在數據源篩選新增數據
②從數據源抽取新增數據
③轉變數據格式,增添計算字段
④更新維度表
⑤將數據加入事實表
⑥從數據倉庫取出數據,更新CUBE
這種ETL過程的優勢是保證數據倉庫的數據完整、統一、可靠。維度表可以保存歷史信息,所以如果維度表有變化,最終的圖表不但能以變化后的維度來顯示,還能以任一歷史時間點的狀態來顯示。此外它還能顯示這個維度整個的歷史變化軌跡。
搭建的傳統ETL過程分為三層結構,用存儲過程將這幾個層次聯系起來,結構圖如圖1所示。第一層為ETL層,主要用來儲存從其他系統中來的數據。在實際應用的系統中,包括專家分類系統,汽車生產商資料庫以及汽車車型參數系統。ETL過程開始后,系統將探測到各個系統的新增數據,然后將這些新數據拷貝到ETL層的表中。第二層為ODS(Operation Data Stage)層,存儲經過清洗、轉化、計算后的數據。當新增數據被拷貝到ETL層后,存儲過程將會開始對數據進行清理,符合要求并且有必要的維度信息的數據將會被拷貝進ODS層,同時完成數據格式的轉換以及新字段的計算。不符合要求的數據,被拷貝進專門的表中,等待專業人士分析,清理。最后一層為DM(Data Management)層,主要儲存歷史數據,也就是我們數據倉庫的主體結構。清理、轉換后,數據將會被ETL過程從ODS層合并到DM層中。

圖1 傳統ETL過程
2.3敏捷型ETL過程設計
設計敏捷型ETL過程,主要以視圖代替表,同樣建成類似數據倉庫的結構,包括事實視圖和維度視圖,組成星形結構的數據視圖倉庫,敏捷型ETL過程結果如圖2。
首先,新的ETL過程依然保留有傳統ETL過程的層級結構。用于保存新增數據的ETL層以及存儲過程被保留下來,以避免頻繁的數據查詢可能會影響到正常系統的應用。但敏捷型ETL過程的ETL層,區別于傳統的ETL層在數據輸入前被清空,敏捷型ETL層包含有以前的歷史數據。也就是,ETL層表里的數據,是所有經過篩選被傳進ETL系統的原始數據的累積。
然后,建立ODS層。傳統ETL的ODS層由實表組成,而敏捷型ETL過程的OD采用視圖的方式。為每一個維度建立一個視圖,由視圖將數據從ETL數據層中取出,進行清洗、轉換,并且加入計算字段。所以維度表視圖建立起來后,建立事實表的視圖。由于視圖里建立唯一ID字段并不容易,所以需要盡力借助已有的ID來進行連接。我們這里使用汽車的車輛型號作為事實視圖連接各個維度視圖的連接字段。由于車輛型號是每種車輛型號的唯一判斷字段,所以用它來連接事實視圖和各個維度視圖不會造成數據的重復。
因為敏捷型ETL過程沒有數據倉庫,也就沒有最后的DM層來儲存歷史數據。最后ODS層的各個視圖就起到了數據倉庫的作用。當ODS層的各視圖建立起來,我們就可以使用Tableau直接從視圖中抽取數據。

圖2 敏捷型ETL過程圖
為了測試性能,只設計了一個數據集市,包含這個數據倉庫的所有數據。兩種ETL過程完成后,均采用兩種方法讓Tableau從數據倉庫DM層中抽取數據。第一種是用Tableau直接抽取,在編輯Tableau數據源的時候,將DM層的表按照設計的星形結構連接起來,然后直接抽取;另一種方法是建立一個視圖,按照設計好的星形結構查詢數據,然后Tableau直接抽取這個視圖的數據。
以部分車型一個月的銷量數據為樣例,使用這四種ETL過程以及Tableau從數據倉庫中抽取數據集市的時間情況。詳細消耗的時間情況見表1。
可以看出,Tableau本身的數據連接系統是比較高效的,不論是傳統ETL還是敏捷型的ETL,將星形結構直接放到Tableau數據源編輯器中抽取的效率都高于使用Tableau從視圖中抽取數據的效率。

表1 ETL執行時間對比表
從兩種ETL過程的對比來看可以發現,雖然敏捷型ETL的開發節省了把數據導入數據倉庫的過程,但由于Tableau抽取數據庫視圖本身的低效率,其抽取過程并不比傳統的ETL過程更省時間。而一個成熟高效的傳統ETL過程本身用于數據清理、轉換、插入的時間也并不多。敏捷型ETL雖然能夠省去數據插入這一步,但數據的清理、轉換這些步驟卻無法省去,反而在視圖中完成這些工作的效率沒有在存儲過程中高。所以兩種ETL抽取過程比較起來,除非數據清理轉換工作非常簡單而數據量非常大,導致ETL過程需要用比進行數據清理轉換工作多更多的時間來進行數據的輸入工作,否則無論是直接抽取數據還是從視圖中抽取數據,傳統ETL的效率都比敏捷型ETL的效率要高。
比較而言,敏捷型ETL開發更為簡單,取消了清洗后的數據錄入到數據倉庫表的步驟,使數據能夠更實時地反映數據的變化,尤其適用于清洗、轉化過程比較簡單大量數據。特別是數據源比較單一的數據,可以省略掉導入ETL層的步驟,直接寫ODS層的視圖,從而實現數據集市數據與數據源的實時連接。
但是,敏捷型ETL開發的缺點也很明顯。首先,傳統數據倉庫可以保留歷史數據變化,但由于視圖不接受參數,敏捷型ETL更關注當前數據狀態。其次,如果數據清洗、轉化復雜,例如需要新建ID或者連接字段,或者需要聚合數據或者進行復雜的數據計算,那么就不適宜或者根本不能采用敏捷型的ETL過程。最后敏捷型ETL過程,雖然省去了數據進入數據倉庫的時間,但是用于采用了視圖,降低了數據清理、連接、轉換和計算的效率,數據進入數據集市的時間要比傳統的數據集市抽取時間更長。
總而言之,是否要采取敏捷型的ETL過程,需要根據實際的數據情況來定。如果數據源單一,數據清理,轉化的步驟并不繁雜,數據量反而比較大,那敏捷型ETL過程以及與之相適應的數據倉庫就是一個不錯的選擇。如果數據源復雜,清理轉換工作量大而且計算復雜,則采取傳統的數據倉庫以及ETL過程是一個更為明智的選擇。
[1]張瑞.ETL數據抽取研究綜述[J].軟件導刊,2010(10):164-165.
[2]陳玉東,姚青.基于商務智能的流程評估系統中ETL的研究[J].計算機工程與設計,2014,35(8):2752-2756.
[3]畢錕.ETL系統的設計及其研究[J].軟件導報,2010,9(5):172-175.
[4]范金花.報表系統中ETL通用架構的設計與研究[J].計算機技術與發展,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-),女,河北石家莊人,工程師,碩士,研究方向為商務智能與數據挖掘
2015-11-10
2015-11-20
敏捷BI為用戶提供了新型ETL方式,建立敏捷型的ETL過程,即不通過數據倉庫,使用ETL工具由數據源直接抽取經過轉換后的數據。以汽車行業的數據為例,提出一種敏捷型ETL過程的建立方法,即在數據庫中以原始數據為基礎建立視圖,使用ETL工具從這些視圖中取得數據,并通過和傳統ETL過程的對比評估這種方式的效率。
數據倉庫;ETL;敏捷BI;敏捷型ETL
李英勃(1983-),男,天津人,碩士,研究方向為商務智能與數據挖掘
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.