汪健雄,王 芳,賈成強(qiáng),劉婷婷
(中國鐵道科學(xué)研究院 電子計(jì)算技術(shù)研究所,北京 100081)
開源商業(yè)智能技術(shù)在鐵路客運(yùn)營銷輔助決策中的應(yīng)用
汪健雄,王 芳,賈成強(qiáng),劉婷婷
(中國鐵道科學(xué)研究院 電子計(jì)算技術(shù)研究所,北京 100081)
提出基于Pentaho的鐵路客運(yùn)營銷輔助決策解決方案,重點(diǎn)介紹基于Kettle的ETL設(shè)計(jì)、報(bào)表立方體設(shè)計(jì)和OLAP分析、報(bào)表制作以及根據(jù)用戶需要定制個(gè)性化報(bào)表控件等關(guān)鍵技術(shù),解決了商用軟件由于在接口和代碼上的封閉性,不能完全自定義客戶個(gè)性化需求的問題,節(jié)約了軟件采購成本,具有廣闊應(yīng)用前景。但該解決方案也存在一些不足,如:開發(fā)工作量大、軟件文檔不足,以及系統(tǒng)安全性和并發(fā)性能未做很好的測(cè)試和優(yōu)化等問題,在今后的研究和生產(chǎn)中需要重點(diǎn)解決。
開源商業(yè)智能;Pentaho;客運(yùn)營銷輔助決策;OLAP;自定義控件
鐵路客運(yùn)營銷輔助決策系統(tǒng)是為鐵路總公司、各鐵路局提供鐵路運(yùn)能、運(yùn)量、收入、效益分析等指標(biāo)的決策支持系統(tǒng)。從系統(tǒng)建設(shè)之初起,引入商業(yè)智能軟件,實(shí)現(xiàn)了客運(yùn)數(shù)據(jù)在鐵路總公司和鐵路局范圍內(nèi)的共享,鐵路總公司、鐵路局、站段各級(jí)用戶通過統(tǒng)一授權(quán)訪問,從運(yùn)能、運(yùn)量和收入各個(gè)層面分析、評(píng)價(jià)客運(yùn)組織情況,預(yù)測(cè)客流趨勢(shì)并指導(dǎo)今后的發(fā)展,鐵路各級(jí)管理者在客運(yùn)組織工作方面有了重大改變,起到了提高客運(yùn)業(yè)務(wù)的核心競(jìng)爭(zhēng)能力的作用[1]。但上述商業(yè)智能軟件在適應(yīng)了復(fù)雜業(yè)務(wù)分析的需求之后,一些問題逐漸顯現(xiàn)出來,主要包括:
(1)商用軟件在接口、代碼上的封閉性,不能完全自定義客戶個(gè)性化的需求,如果廠商不主動(dòng)發(fā)布升級(jí)版本,很難對(duì)系統(tǒng)進(jìn)行拓展。
(2)隨著數(shù)據(jù)量與日俱增,當(dāng)前商業(yè)智能軟件在大數(shù)據(jù)應(yīng)用方面的支持相對(duì)較弱,同時(shí)系統(tǒng)查詢性能也存在瓶頸,很難再繼續(xù)優(yōu)化。
(3)商用軟件價(jià)格昂貴,支出較大,不利于系統(tǒng)建設(shè)方控制成本。
近年來,開源商業(yè)智能項(xiàng)目在互聯(lián)網(wǎng)行業(yè)得到了長足發(fā)展,很多優(yōu)秀的開源產(chǎn)品可與商業(yè)產(chǎn)品一較高低。在商業(yè)智能(BI)方面,近年來開源社區(qū)中的Pentaho具有很多特點(diǎn),正成為開源BI事實(shí)上的標(biāo)準(zhǔn),為此在鐵路總公司級(jí)的客運(yùn)營銷輔助決策系統(tǒng)中嘗試采用開源的Pentaho BI套件解決方案。
Pentaho是對(duì)多個(gè)開源項(xiàng)目進(jìn)行改進(jìn)、擴(kuò)充和集成組成的BI平臺(tái),涵蓋了常規(guī)BI系統(tǒng)的開發(fā)、部署和運(yùn)行環(huán)境。Pentaho平臺(tái)的核心思想是以業(yè)務(wù)流程為核心,基于工作流技術(shù),讓決策成為業(yè)務(wù)的一個(gè)環(huán)節(jié),實(shí)現(xiàn)企業(yè)業(yè)務(wù)過程整合[2]。Pentaho提供了圍繞特定項(xiàng)目制定方案的集成開發(fā)環(huán)境,體現(xiàn)了面向解決方案的BI研發(fā)思路。PentahoBI平臺(tái)主要由以下幾部分組成:
(1)OLAP服務(wù)器:集成了基于Java開發(fā)的OLAP服務(wù)器,Mondrian,用于對(duì)存儲(chǔ)在關(guān)系數(shù)據(jù)庫中的大型數(shù)據(jù)集進(jìn)行交互分析。
(2)OLAP分析工具:集成了JPivot可視化組件,可實(shí)現(xiàn)多維數(shù)據(jù)表和多維數(shù)據(jù)圖以及數(shù)據(jù)立方體的展示。報(bào)表工具組件名為ReportDesigner,是基于JSP的B/S分析工具,用于自定義分析報(bào)表。
(3)ETL組件PDI:Pentaho整合了開源ETL工具Kettle,包括Spoon和Pan兩個(gè)包。Kettle提供的Spoon和Chef工具提供Drag&Drop的圖形化界面,用于定義和執(zhí)行ETL轉(zhuǎn)換流程,同時(shí)在Chef或Kitchen中通過Job可以定義和執(zhí)行定時(shí)任務(wù)。
(4)數(shù)據(jù)挖掘工具Weka: Weka作為一個(gè)公開的數(shù)據(jù)挖掘工作平臺(tái),集合了大量能承擔(dān)數(shù)據(jù)挖掘任務(wù)的機(jī)器學(xué)習(xí)算法,包括對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,分類,回歸、聚類、關(guān)聯(lián)規(guī)則以及在新的交互式界面上的可視化。
(5)集成管理和開發(fā)環(huán)境:Pentaho Design Studio是基于Eclipse的開發(fā)、項(xiàng)目測(cè)試和部署環(huán)境,集成Action Sequence編輯器用于定義工作流的圖形化界面。
Pentaho涵蓋了數(shù)據(jù)倉庫、ETL、OLAP、數(shù)據(jù)挖掘以及報(bào)表生成、儀表盤等應(yīng)用的測(cè)試和部署的集成開發(fā)環(huán)境,是目前對(duì)BI的功能支持最為全面的開源套件,同時(shí)與商業(yè)軟件相比在二次開發(fā)和成本方面具有較大優(yōu)勢(shì),因此選用Pentaho進(jìn)一步研究鐵路客運(yùn)決策支持系統(tǒng)。
基本設(shè)計(jì)思路是以數(shù)據(jù)倉庫的設(shè)計(jì)和實(shí)施為中心,數(shù)據(jù)挖掘的應(yīng)用為補(bǔ)充,構(gòu)建基于Pentaho的商業(yè)智能系統(tǒng)。通過在鐵路總公司營銷系統(tǒng)及其他業(yè)務(wù)系統(tǒng)基礎(chǔ)上構(gòu)建Pentaho 商業(yè)智能平臺(tái)來實(shí)現(xiàn)系統(tǒng)集成,使從日常的業(yè)務(wù)中的操作型數(shù)據(jù)變?yōu)榉治鲂蛿?shù)據(jù),從分析型數(shù)據(jù)中提煉決策信息,協(xié)助鐵路客運(yùn)管理者做出正確的決策。
系統(tǒng)分為4個(gè)層次:
(1)數(shù)據(jù)層:包括原有的中國鐵路總公司營銷系統(tǒng)、客票發(fā)售與預(yù)定系統(tǒng)(簡稱:客票系統(tǒng))可以為 BI 提供大量的寶貴的源數(shù)據(jù),同時(shí)為了解決鐵路總公司綜合分析的要求,引入了客圖接口數(shù)據(jù)、鐵路客運(yùn)清算系統(tǒng)成本數(shù)據(jù)以及其他可用于客運(yùn)決策支持的原始數(shù)據(jù)。
(2)基礎(chǔ)架構(gòu)層:引入Pentaho BI平臺(tái)中的OLAP技術(shù)和Weka數(shù)據(jù)挖據(jù)工具進(jìn)行多目標(biāo)、多維度的分析以及即席查詢;未來還將引入開源數(shù)學(xué)計(jì)算項(xiàng)目R來實(shí)現(xiàn)預(yù)測(cè)、盈虧分析等應(yīng)用的模型與算法形成運(yùn)算引擎。通過基于Kettle的數(shù)據(jù)抽取、轉(zhuǎn)換、加載工具形成數(shù)據(jù)倉庫。
(3)業(yè)務(wù)應(yīng)用平臺(tái):根據(jù)鐵路總公司需求,重點(diǎn)實(shí)現(xiàn)可圖管理、數(shù)據(jù)挖掘、運(yùn)營報(bào)表、預(yù)測(cè)和盈虧分析等應(yīng)用,該平臺(tái)將集成在Pentaho BI Server組件中。
(4)展現(xiàn)層:根據(jù)鐵路總公司需求,利用JSP、AJAX、Flex等技術(shù)實(shí)現(xiàn)報(bào)表、統(tǒng)計(jì)圖形、OLAP展現(xiàn)以及一些自定義交互應(yīng)用。其中,儀表盤可以高效集成各種BI內(nèi)容,并以較簡單、統(tǒng)一的視圖呈現(xiàn)給各級(jí)用戶,各種不同層次的BI用戶還可以定制適合自己的儀表盤。Pentaho Dashboard工具基于CDF(Community Dashboard Framework)項(xiàng)目整合而來的,可以直接將儀表盤等應(yīng)用集成在Pentaho BI Server中作為解決方案進(jìn)行發(fā)布,如圖1所示。
3.1 ETL設(shè)計(jì)
數(shù)據(jù)的抽取、轉(zhuǎn)換和加載(ETL)是BI項(xiàng)目中最常見、基礎(chǔ)的數(shù)據(jù)操作。在數(shù)據(jù)倉庫的構(gòu)建期間,各個(gè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)必須經(jīng)過嚴(yán)格的ETL過程,整合到數(shù)據(jù)倉庫中為后續(xù)的分析、數(shù)據(jù)展現(xiàn)提供支撐。數(shù)據(jù)可能來自不同業(yè)務(wù)部門,以及不同的數(shù)據(jù)源規(guī)格。另外,一些即席報(bào)表對(duì)運(yùn)行的時(shí)間要求較高,通常需要對(duì)海量數(shù)據(jù)進(jìn)行數(shù)據(jù)聚合和初步加工來更改數(shù)據(jù)的粒度,使得報(bào)表服務(wù)器可以更快的響應(yīng)用戶提交的數(shù)據(jù)請(qǐng)求。在Pentaho平臺(tái)使用Kettle作為ETL處理組件,從SybaseASE數(shù)據(jù)源、SybaseIQ和平面文件中抽取數(shù)據(jù)。利用Kettle中的Spoon工具對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行必要的字段處理和格式轉(zhuǎn)換,把處理過的數(shù)據(jù)重新加載到數(shù)據(jù)倉庫中,然后利用Kitchen工具,實(shí)現(xiàn)系統(tǒng)定期執(zhí)行ETL腳本,完成數(shù)據(jù)的自動(dòng)抽取[3]。Kettle工具定義的ETL流程如圖2所示。
圖1 基于Pentaho的客運(yùn)營銷BI體系設(shè)計(jì)
圖2 Kettle工具定義的ETL流程
3.2 OLAP分析
Pentaho平臺(tái)使用的Mondrian組件提供OLAP服務(wù)。利用可視化工具Pentaho Schema Workbench,分析人員可以編寫多維查詢語言MDX,并形成模板提供給分析人員使用,同時(shí)對(duì)數(shù)據(jù)倉庫中的數(shù)據(jù)集進(jìn)行交互分析[4]。為便于試驗(yàn),使用Tomcat作為Mondrian應(yīng)用服務(wù)器。使用Mondrian的架構(gòu)進(jìn)行OLAP分析的具體步驟如下:
(1)底層:數(shù)據(jù)庫或從原有的數(shù)據(jù)庫中提取可用的數(shù)據(jù)表。
(2)存儲(chǔ)層:數(shù)據(jù)倉庫的建立,將原有的底層數(shù)據(jù)庫轉(zhuǎn)化為星型模型或雪花模型。
(3)維度層:生成schema文件,將存儲(chǔ)層的數(shù)據(jù)倉庫轉(zhuǎn)化為一個(gè)schema文件,通過schemaworkbench或者手寫完成,可以通過MDX來對(duì)多維數(shù)據(jù)庫進(jìn)行訪問,并產(chǎn)生可部署到Mondrian服務(wù)器上的OLAP解決方案,解決方案的基本配置文件包括流程文件xaction、立方體描述文件等。Mondrian OLAP引擎根據(jù)部署的配置文件,從數(shù)據(jù)庫中計(jì)算和緩存數(shù)據(jù),并響應(yīng)來自展示層的各種查詢。專業(yè)分析用戶可以直接使用MDX語句訪問;將MDX預(yù)先存儲(chǔ)后,非專業(yè)用戶也可以在圖形化交互界面中進(jìn)行數(shù)據(jù)分析。
(4)展示層:編寫jsp文件用于OLAP展示,由JPivot提供的表現(xiàn)層TagLib實(shí)現(xiàn),這是一個(gè)使用Web組件框架(WCF)技術(shù)、采用XML/XSLT渲染W(wǎng)eb UI的開源組件,可以比較方便的將多維數(shù)據(jù)展示給最終用戶,可展現(xiàn)多維數(shù)據(jù)透視圖表,支持鉆取、切片、旋轉(zhuǎn)等操作。一個(gè)按運(yùn)營單位、日期、票種3個(gè)維度分析發(fā)送量的立方體模型的schema定義如下:
Cube 建好后即可以利用Kettle抽取數(shù)據(jù),并使用JPivot生成報(bào)表。
3.3 自定義報(bào)表
Pentaho提供的報(bào)表生成工具為Report Designer,可以根據(jù)用戶需要制作專業(yè)化的分析報(bào)表,并支持Excel或PDF等通用格式的展現(xiàn)[5]。圖3所示的是正在編輯報(bào)表的界面:左側(cè)的豎排工具欄顯示的是設(shè)計(jì)報(bào)表時(shí)可能用到的控件。中間的部分是編輯自定義報(bào)表的主界面,右邊的標(biāo)簽Structure可以看到報(bào)表各個(gè)元素的結(jié)構(gòu),Data標(biāo)簽包含了展示的數(shù)據(jù),如包括報(bào)表query的數(shù)據(jù)源及各種函數(shù)。報(bào)表設(shè)計(jì)主界面分成了PageHeader、ReportHeader、Details、ReportFooter、PageFooter等多個(gè)區(qū)域。Page Header與Page Footer中的對(duì)象會(huì)在報(bào)表的每頁都顯示。Report Header中的對(duì)象只在報(bào)表開頭時(shí)展示一次,Detail中的對(duì)象會(huì)展現(xiàn)query中的結(jié)果集,Report Footer中的對(duì)象只在報(bào)表的末尾顯示一次。需要展示的字段放在Details區(qū)域,通過Structure標(biāo)簽可以查看報(bào)表數(shù)據(jù)項(xiàng)與頁面之間的組成關(guān)系。
圖3 使用Report Designer實(shí)現(xiàn)的報(bào)表設(shè)計(jì)視圖
Report Designer制作的報(bào)表可以設(shè)置輸入?yún)?shù),通過利用參數(shù)來對(duì)報(bào)表數(shù)據(jù)源設(shè)置filter以達(dá)到傳遞交互式查詢條件的目的??稍趫?bào)表查詢的主query中加入?yún)?shù)StartDate(其格式為${StartDate})。報(bào)表執(zhí)行時(shí)將會(huì)顯示當(dāng)滿足“train_date=${StartDate}”的值時(shí),查詢語句所選擇的數(shù)據(jù),如圖4所示的京滬高鐵運(yùn)營日況報(bào)表。該報(bào)表除了StartDate參數(shù)外,提示頁上還可以使用下拉框選擇報(bào)表運(yùn)行后輸出的格式。輸入?yún)?shù)以后運(yùn)行的結(jié)果頁面:
圖4 在完成的BI門戶中實(shí)現(xiàn)的報(bào)表運(yùn)行視圖
3.4 自定義報(bào)表控件
開源BI的優(yōu)勢(shì)之一是可以自定義報(bào)表控件,對(duì)開發(fā)工具進(jìn)行擴(kuò)展。在列車編組信息管理的開發(fā)中,需要實(shí)現(xiàn)分席別、指定區(qū)域,列車等級(jí)和方向列車圖定與實(shí)際能力查詢得到旅客列車對(duì)數(shù)表和運(yùn)能統(tǒng)計(jì)表,同時(shí)需要在集成的圖形中展示列車編組、交路信息,包括列車基本信息、運(yùn)行里程、車底組數(shù)、編組布局、交路圖形、開行規(guī)律、種類型號(hào)、運(yùn)用狀態(tài)等。現(xiàn)有使用的BI平臺(tái)無法實(shí)現(xiàn)我們需要的效果。在Pentaho中,使用了JFreeChart這個(gè)開源工程來實(shí)現(xiàn)自定義報(bào)表控件[6],并通過控件可視化拖拽的方式在其他報(bào)表中進(jìn)行復(fù)用。
在meta-elements.xml中定義元件的元素定義:
將整個(gè)文件包編譯成jar包后放到PRD的lib目錄下,重新啟動(dòng)PRD會(huì)在左側(cè)控件欄中看到一個(gè)紅色火車頭為圖表的自定義控件StationChart,并可以將它拖放到報(bào)表中。
StationChart屬性和布局如圖5所示,Station-Chart的運(yùn)行圖報(bào)表如圖6所示。
圖5 在Report Designer中設(shè)置StationChart屬性和布局
本文提出了在鐵路客運(yùn)營銷系統(tǒng)基礎(chǔ)上構(gòu)建基于Pentaho的商業(yè)智能系統(tǒng)的方法,提出了基于Kettle的ETL設(shè)計(jì)、報(bào)表立方體設(shè)計(jì)和OLAP分析、報(bào)表制作以及根據(jù)用戶需要定制個(gè)性化報(bào)表控件等解決方案,在一定程度上解決了由于商用軟件在接口、代碼上的封閉性,不能完全自定義客戶個(gè)性化需求的問題,同時(shí)節(jié)約了軟件采購成本。Pentaho平臺(tái)整合了一套適用于開發(fā)、部署和運(yùn)行商業(yè)智能系統(tǒng)的環(huán)境與工具,為企業(yè)級(jí)商業(yè)智能實(shí)現(xiàn)提供了一種開放、經(jīng)濟(jì)的平臺(tái),進(jìn)一步深入研究還有儀表盤、與Hadoop整合實(shí)現(xiàn)大數(shù)據(jù)集群等應(yīng)用,由于篇幅問題將另作討論。
圖6 在完成的BI門戶中查看StationChart的報(bào)表運(yùn)行視圖
[1]汪健雄,劉春煌,單杏花,等.業(yè)務(wù)智能技術(shù)在鐵路客運(yùn)營銷輔助決策系統(tǒng)中的應(yīng)用 [J].鐵路計(jì)算機(jī)應(yīng)用,2009,18(12):23-27.
[2]Pentaho Corporation.Pentaho open source business intelligence platform technical white paper[EB/OL].http://www.pentaho.com,2015.
[3]Pentaho Documentation Team.Evaluate and Learn Pentaho Data Integration[EB/OL].https://help.pentaho.com/Documentation/5.3/0D0/1A0/010/000,2015.
[4]陳榮鑫 ,付永鋼 ,陳維斌.基于 Pentaho 的商業(yè)智能系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(9):2407-2409.
[5]jfree.org.JFreeChart API Documentation[EB/OL].http://www.jfree.org/jfreechart/api/javadoc/ index.html,2015.
[6]Pentaho Documentation Team.Business Analytics Report Designer[EB/OL].http://www.pentaho.com/training-course/ business-analytics-report-designer, 2015.
責(zé)任編輯 徐侃春
Open source business intelligence technology applied to Railway Passenger Marketing aided Decision System
WANG Jianxiong,WANG Fang,JIA Chengqiang,LIU Tingting
( Institute of Computing Technologies,China Academy of Railway Sciences,Beijing 100081,China)
This article proposed a solution of Railway Passenger Marketing aided Decision System,introduced several key technologies,such as Kettle based ETL design,report cube design,OLAP analysis,report making and custom personalized report control,and so on.This solution could overcome the shortage of closing codes and hardness of custom control,save software cost,and lead to a wide used prospect.Otherwise,some problems should be settled in the future,such as a large amount of coding work,lack of documents,insuffcient safety test and parallel performance test.
open source business intelligence;Pentaho;Railway Passenger Marketing aided Decision System;OLAP;custom control
U239∶F530.86∶TP39
A
1005-8451(2016)06-0018-06
2015-12-03
中國鐵道科學(xué)研究院基金項(xiàng)目(2014YJ013)。
汪健雄,副研究員;王 芳,副研究員。