在絕大多數(shù)的軟件系統(tǒng)中,報(bào)表的制作都是一項(xiàng)復(fù)雜但又必不可少的應(yīng)用,在某種程度上甚至決定了軟件能否推廣,因而其重要程度不言而喻。近幾年,越來越多的企業(yè)實(shí)施了ERP系統(tǒng)。隨著ERP系統(tǒng)的完善,企業(yè)逐漸將重點(diǎn)轉(zhuǎn)移到滿足各種層次的業(yè)務(wù)報(bào)表需求的建設(shè)上來,因此企業(yè)級(jí)報(bào)表中心的建立就成了CIO們關(guān)心的一個(gè)話題。本文以上海通用汽車有限公司的思考和實(shí)踐為例,討論了一個(gè)整體規(guī)劃、局部實(shí)施的企業(yè)級(jí)報(bào)表中心解決方案,供業(yè)界參考。 在1999年4月第一輛別克車下線時(shí),上海通用汽車有限公司(以下簡(jiǎn)稱“SGM”)就建立了以美國(guó)通用汽車(GM)的核心公共系統(tǒng)和SAP部分模塊為主的、比較完善的ERP系統(tǒng)。這幾年,隨著SGM業(yè)務(wù)的進(jìn)一步發(fā)展,SGM IT部門逐步改造了部分原有業(yè)務(wù)系統(tǒng),并建立了越來越多的企業(yè)業(yè)務(wù)應(yīng)用系統(tǒng)。所有這些業(yè)務(wù)系統(tǒng)中都有一定的報(bào)表功能,能滿足基本的生產(chǎn)管理和控制的需求。 建設(shè)過程中,一個(gè)在許多企業(yè)中普遍發(fā)生的問題也同樣困擾著SGM:盡管各業(yè)務(wù)系統(tǒng)中已經(jīng)有許多報(bào)表,但業(yè)務(wù)部門(尤其是市場(chǎng)部、財(cái)務(wù)部、質(zhì)量部等)在日常業(yè)務(wù)操作和管理中,仍然需要更多的報(bào)表,而且對(duì)分析型報(bào)表的需求逐漸多起來。因此業(yè)務(wù)部門就不斷地對(duì)IT支持人員提出開發(fā)新報(bào)表的要求。 為了將IT支持人員從煩瑣的、零星的報(bào)表程序開發(fā)工作中解脫出來,SGM IT決定實(shí)施一個(gè)獨(dú)立于各業(yè)務(wù)系統(tǒng)(OLTP系統(tǒng))、面向整個(gè)公司或部門的報(bào)表中心項(xiàng)目來滿足各業(yè)務(wù)部門的不斷增長(zhǎng)的報(bào)表需求。初期建設(shè)時(shí),對(duì)SGM報(bào)表中心項(xiàng)目提出了如下期望: ● 該報(bào)表中心將提供各業(yè)務(wù)部門所有日常運(yùn)營(yíng)和管理所需的報(bào)表; ● 盡可能將產(chǎn)生報(bào)表的功能從OLTP系統(tǒng)中脫離出來,以提高OLTP系統(tǒng)的性能; ● 最大程度地減少SGM IT人員對(duì)各業(yè)務(wù)部門的報(bào)表需求的支持工作量; ● 使業(yè)務(wù)用戶經(jīng)過簡(jiǎn)單培訓(xùn)后能自己定制各種報(bào)表。 在這種背景下,SGM IT部專門成立了一個(gè)報(bào)表中心項(xiàng)目組,該項(xiàng)目組的前期任務(wù)是提出SGM報(bào)表中心解決方案,該方案有以下具體要求: ● 是一個(gè)可實(shí)施的(workable)的方案; ● 給出關(guān)鍵技術(shù)難點(diǎn)及建議解決方法; ● 對(duì)SGM未來的企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)發(fā)展方向給出建議。 該項(xiàng)目組在專業(yè)咨詢公司的幫助下,對(duì)SGM目前的報(bào)表需求進(jìn)行了詳細(xì)分析,對(duì)一些可能的技術(shù)難點(diǎn)進(jìn)行了試驗(yàn),并最終給出了下列的解決方案。 現(xiàn)階段的報(bào)表需求分析 從整個(gè)企業(yè)的業(yè)務(wù)運(yùn)行、管理、決策的角度看,所需要的報(bào)表可以大致分為下列幾類: 1. 按運(yùn)行頻率來分,有實(shí)時(shí)性報(bào)表和日/周/月批次報(bào)表。 實(shí)時(shí)性報(bào)表 這里實(shí)時(shí)性的含義是:能反映在報(bào)表生成這一刻之前的有關(guān)車輛、物料、費(fèi)用、客戶、經(jīng)銷商、庫(kù)存、生產(chǎn)等信息變化的報(bào)表。 盡管從理論上講可以采用報(bào)表中心的方式來產(chǎn)生這類報(bào)表,但一般我們不建議這樣做。不斷地從業(yè)務(wù)系統(tǒng)中抽取數(shù)據(jù),會(huì)嚴(yán)重影響在線運(yùn)行的業(yè)務(wù)系統(tǒng)的性能。 日/周/月批次報(bào)表 該類報(bào)表通常在業(yè)務(wù)操作(Operation)一層中所占數(shù)量較多,OLTP系統(tǒng)中的許多夜間工作的主要目的就是產(chǎn)生這類報(bào)表。 2. 按報(bào)表格式來分,有固定格式報(bào)表和非固定格式報(bào)表。 固定格式報(bào)表 在報(bào)表中心開發(fā)初期,這類報(bào)表大量存在。業(yè)務(wù)人員能提出明確的需求,并給出所希望的報(bào)表格式。這類報(bào)表適合在報(bào)表中心中開發(fā)。 非固定格式報(bào)表 有時(shí)也稱該類報(bào)表為Ad Hoc查詢。這類報(bào)表在OLTP系統(tǒng)中往往是一類需求或報(bào)表呈現(xiàn)樣式不太確定的報(bào)表,而且對(duì)計(jì)算資源的需求往往較多,因此非常適合在報(bào)表中心中開發(fā)。 3. 按業(yè)務(wù)層次來分,有操作類報(bào)表和管理類報(bào)表。 操作類報(bào)表 目前所涉及到的大多為此類報(bào)表,主要是業(yè)務(wù)人員在日常業(yè)務(wù)操作中所需要的報(bào)表。操作類報(bào)表中有細(xì)節(jié)數(shù)據(jù),也有匯總數(shù)據(jù)。 管理類報(bào)表 管理類報(bào)表大多為各層主管或部門經(jīng)理,甚至公司領(lǐng)導(dǎo)需要看到的報(bào)表,是中度匯總或高度匯總過的數(shù)據(jù)。 4. 按展現(xiàn)方式來分,有交互分析報(bào)表和固定發(fā)布報(bào)表。 交互分析報(bào)表 這類報(bào)表的特點(diǎn)是一般沒有固定的格式,或有一定格式但需要綜合計(jì)算、匯總,而且業(yè)務(wù)分析人員往往需要從不同的角度進(jìn)行分析,甚至還要在一定的假設(shè)條件下進(jìn)行分析。 固定發(fā)布報(bào)表 將報(bào)表以批處理的方式產(chǎn)生,然后存放到報(bào)表管理系統(tǒng)中,用戶在需要的時(shí)候直接將報(bào)表展現(xiàn)。 除了以上分類外,還有統(tǒng)計(jì)分析和數(shù)據(jù)挖掘報(bào)表,這類報(bào)表是數(shù)據(jù)分析應(yīng)用的較高層次的報(bào)表。如在質(zhì)量管理方面,統(tǒng)計(jì)分析和數(shù)據(jù)挖掘的報(bào)表展現(xiàn)是最主要的需求。在售后服務(wù)方面,統(tǒng)計(jì)分析的需求也會(huì)很強(qiáng)烈。 通過以上的分析,我們可以看出,除了實(shí)時(shí)性報(bào)表適合且必須在OLTP系統(tǒng)中開發(fā)外,其他類型的報(bào)表都應(yīng)該在報(bào)表中心中開發(fā)。將非實(shí)時(shí)性報(bào)表從OLTP系統(tǒng)中脫離出來,通過建立報(bào)表中心系統(tǒng)來單獨(dú)開發(fā)的一個(gè)最直接的好處是:大大提高了OLTP系統(tǒng)的運(yùn)行性能和響應(yīng)速度。 開放式企業(yè)級(jí)報(bào)表中心解決方案 本解決方案架構(gòu)中,數(shù)據(jù)源部分是SGM目前所有的數(shù)據(jù)源類型。除此之外,我們將整體架構(gòu)分成四部分:ETL(提取、轉(zhuǎn)換、導(dǎo)入)部分,數(shù)據(jù)重組織(Data Re-Construction)部分,數(shù)據(jù)呈現(xiàn)(Presentation)部分,元數(shù)據(jù)管理(Meta Data)部分。 1.ETL部分 該部分表示了從目前SGM業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(kù)中抽取數(shù)據(jù)的過程。在目前建設(shè)數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用的諸多案例中,對(duì)ETL這部分通常采用兩種模式開發(fā): 開發(fā)人員自己編寫程序 這是早些年被大多數(shù)公司所采用的一種方式,開發(fā)人員自己編寫程序從業(yè)務(wù)系統(tǒng)中抓取數(shù)據(jù)。優(yōu)點(diǎn)是表面看起來前期投資較少,但經(jīng)過幾年的實(shí)踐,逐漸暴露出下列缺點(diǎn): (1)開發(fā)周期長(zhǎng)。由于數(shù)據(jù)抽取、轉(zhuǎn)換、轉(zhuǎn)載等環(huán)節(jié)都由開發(fā)人員一行行編寫程序來完成,因此開發(fā)效率不高,導(dǎo)致即使是中小規(guī)模的項(xiàng)目,整個(gè)開發(fā)周期也很長(zhǎng),無法及時(shí)滿足業(yè)務(wù)部門的需求。 (2)維護(hù)工作量大。由于整個(gè)ETL部分都是代碼組成,支持人員閱讀困難,當(dāng)系統(tǒng)有故障時(shí),導(dǎo)致查錯(cuò)、排錯(cuò)的工作量很大。這實(shí)際上與當(dāng)初建設(shè)數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用時(shí)希望將IT日常支持人員從煩瑣的、大量的報(bào)表支持工作中解脫出來的初衷相違背。 (3)可擴(kuò)展型差。數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用開發(fā)是一個(gè)不斷完善的過程,只有開始,沒有結(jié)束。當(dāng)業(yè)務(wù)用戶提出新需求時(shí),往往要對(duì)ETL部分做一定的改動(dòng),此時(shí)就表現(xiàn)出整個(gè)系統(tǒng)的可擴(kuò)展性較差。 采用商業(yè)化的ETL工具 這幾年越來越多的公司在數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用開發(fā)中采用了商業(yè)化的ETL工具。ETL工具被認(rèn)為是數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用開發(fā)中最重要的工具之一,其主要原因是: (1)能夠明顯改正由于開發(fā)人員自己編寫ETL程序所導(dǎo)致的諸多缺點(diǎn)。 (2)能夠帶來由于開發(fā)效率高、項(xiàng)目周期縮短而使得項(xiàng)目風(fēng)險(xiǎn)降低的利益。 (3)自動(dòng)調(diào)度功能的實(shí)現(xiàn)。由于ETL工具都有很強(qiáng)的工作流調(diào)度功能,因此很容易實(shí)現(xiàn)數(shù)據(jù)抽取、轉(zhuǎn)換、裝載等各種程序在多種觸發(fā)條件(如系統(tǒng)時(shí)間、操作系統(tǒng)事件、數(shù)據(jù)庫(kù)事件等)下的運(yùn)行。若由手工編寫程序來實(shí)現(xiàn)對(duì)幾十到幾百個(gè)工作流的調(diào)度,則復(fù)雜程度很高,難度很大。 (4)能充分利用硬件平臺(tái)的資源(如SMP、MPP、Cluster等),提高數(shù)據(jù)抽取、轉(zhuǎn)換、轉(zhuǎn)載的效率。 要特別提醒注意的是,在選擇商業(yè)化的ETL工具時(shí)要檢查對(duì)主流ERP軟件的支持程度。若公司實(shí)施了SAP、Siebel、PeopleSoft等應(yīng)用,則一定要考慮ETL工具是否有專門的針對(duì)這些應(yīng)用的聯(lián)接程序(Adapter)。因?yàn)檫@些應(yīng)用的數(shù)據(jù)庫(kù)設(shè)計(jì)非常復(fù)雜,且一般都在應(yīng)用層(Application Layer)對(duì)數(shù)據(jù)庫(kù)進(jìn)行了一定程度的封裝,因此需要專門的Adapter來正確讀取數(shù)據(jù)。 2.?dāng)?shù)據(jù)再組織部分(Data Re-Construction) 我們?cè)谠摬糠植捎昧讼铝屑夹g(shù)來實(shí)現(xiàn)報(bào)表中心的數(shù)據(jù)組織: 分段存儲(chǔ)區(qū)(Staging Area) 在本方案中,我們?cè)O(shè)計(jì)分段存儲(chǔ)區(qū)僅僅為一個(gè)數(shù)據(jù)緩存區(qū),主要是利用前面介紹的Staging Area的隔離和緩存的作用。其數(shù)據(jù)模型比較簡(jiǎn)單,是E-R表示的關(guān)系型數(shù)據(jù)庫(kù)模型,基本繼承了數(shù)據(jù)源中的實(shí)體關(guān)系。也有用簡(jiǎn)單的文件系統(tǒng)來表示的數(shù)據(jù)模型,具體的數(shù)據(jù)模型待后續(xù)項(xiàng)目實(shí)施過程中詳細(xì)定義。 操作數(shù)據(jù)存儲(chǔ)(ODS) 由于ODS的特點(diǎn)是面向主題的、集成的、變化的,數(shù)據(jù)是當(dāng)前的或接近當(dāng)前的,因此在設(shè)計(jì)時(shí)往往按主題來設(shè)計(jì)數(shù)據(jù)模型,而且要體現(xiàn)出對(duì)某一個(gè)主題,數(shù)據(jù)模型是集成的。同時(shí),它不像通常意義上數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)是穩(wěn)定的,在ODS中數(shù)據(jù)是動(dòng)態(tài)變化的,即可以對(duì)其數(shù)據(jù)進(jìn)行增、刪、改等操作。 在本解決方案中,采用操作數(shù)據(jù)存儲(chǔ)(ODS)完全是為了滿足業(yè)務(wù)系統(tǒng)IS-AUTO(SAP在汽車行業(yè)的完整解決方案)中所涉及到的一些反映銷售、生產(chǎn)、物料、運(yùn)輸?shù)葎?dòng)態(tài)變化的報(bào)表開發(fā)而設(shè)計(jì)的。 由于IS-AUTO中包含有六大模塊,因此設(shè)計(jì)按每個(gè)模塊為一個(gè)主題來組織ODS中的數(shù)據(jù)。 SGM MD Data Mart 這是一個(gè)以SGM市場(chǎng)部的需求為目標(biāo)的數(shù)據(jù)集市。 從Sales和Distribution這個(gè)主題來看,一些反映動(dòng)態(tài)變化過程的報(bào)表,可以在ODS中解決。但由于目前市場(chǎng)部的報(bào)表需求比較多,且較多報(bào)表是反映歷史的狀況,因此我們決定設(shè)計(jì)一個(gè)專為市場(chǎng)部服務(wù)的數(shù)據(jù)集市來解決這類報(bào)表的開發(fā)問題。 多維分析(OLAP) 在目前的報(bào)表需求中,盡管比較多的報(bào)表是關(guān)于詳細(xì)數(shù)據(jù)的、操作層面的報(bào)表,但也有一些報(bào)表是屬于管理層面的、多維分析的報(bào)表,比較典型的是CO模塊的所有報(bào)表和DOL中的部分報(bào)表。 通過與市場(chǎng)部的主要業(yè)務(wù)用戶的交流,我們發(fā)現(xiàn)他們對(duì)多維分析報(bào)表的需求還有很多,因此在數(shù)據(jù)集市的基礎(chǔ)之上,我們又引入了多維分析的設(shè)計(jì),以便更好地滿足用戶對(duì)交互分析型報(bào)表的需求。 3. 數(shù)據(jù)呈現(xiàn)(Presentation) 針對(duì)目前這兩個(gè)項(xiàng)目的固定報(bào)表,我們可以采用下列方式來展現(xiàn)報(bào)表: Excel方式 這是受多數(shù)用戶歡迎的一種報(bào)表展現(xiàn)方式。該方式既可以在Web上展現(xiàn)Excel表格的報(bào)表,也可以允許用戶將報(bào)表下載到本地機(jī)器以Excel表格的方式保存。 BO 用BO作前端展現(xiàn)工具,除了可以自動(dòng)產(chǎn)生報(bào)表并自動(dòng)發(fā)布外,還允許用戶自己定義語(yǔ)義層,自己生成一定格式的報(bào)表,并且還能對(duì)數(shù)據(jù)做多維分析。這會(huì)大大減輕IT支持人員不斷為用戶開發(fā)報(bào)表的工作量。 4. 元數(shù)據(jù)(Mata Data Management) 按照定義,元數(shù)據(jù)(Metadata)是關(guān)于數(shù)據(jù)的數(shù)據(jù)。我們將其按用途的不同分為兩類:技術(shù)元數(shù)據(jù)(Technical Metadata)和業(yè)務(wù)元數(shù)據(jù)(Business Metadata)。 技術(shù)元數(shù)據(jù)是存儲(chǔ)關(guān)于數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)技術(shù)細(xì)節(jié)的數(shù)據(jù),是用于開發(fā)和管理數(shù)據(jù)倉(cāng)庫(kù)使用的數(shù)據(jù)。 業(yè)務(wù)元數(shù)據(jù)從業(yè)務(wù)角度描述了數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù),它提供了介于使用者和實(shí)際系統(tǒng)之間的語(yǔ)義層,使得不懂計(jì)算機(jī)技術(shù)的業(yè)務(wù)人員也能夠“讀懂”數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)。業(yè)務(wù)元數(shù)據(jù)主要包括以下信息:使用者的業(yè)務(wù)術(shù)語(yǔ)所表達(dá)的數(shù)據(jù)模型、對(duì)象名和屬性名;訪問數(shù)據(jù)的原則和數(shù)據(jù)的來源;系統(tǒng)所提供的分析方法以及公式和報(bào)表的信息。 在報(bào)表中心的開發(fā)中,我們將元數(shù)據(jù)管理當(dāng)作重中之重來考慮,采用專門的工具來對(duì)元數(shù)據(jù)進(jìn)行統(tǒng)一管理。 未來企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)規(guī)劃 在報(bào)表中心解決方案的基礎(chǔ)之上,結(jié)合我們對(duì)數(shù)據(jù)倉(cāng)庫(kù)的理解和幾年的實(shí)踐經(jīng)驗(yàn),給出的一個(gè)框架性的構(gòu)想,旨在說明從報(bào)表中心解決方案的實(shí)施開始,如何向企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)過渡并最終全面建成一個(gè)企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)。在由數(shù)據(jù)集市向企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)擴(kuò)展的過程中,若能很好地實(shí)施下面幾個(gè)方面所涉及到的內(nèi)容,則SGM就一定能建設(shè)一個(gè)完善的企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用系統(tǒng)。 1.Baseline部分由虛化變成實(shí)在 這里實(shí)現(xiàn)的就是Bill Inmon所定義的“面向主題的、集成的、穩(wěn)定的、隨時(shí)間變化的”的數(shù)據(jù)存儲(chǔ)系統(tǒng)。 Baseline主要保存所有的細(xì)節(jié)數(shù)據(jù)(但并不是所有的Transaction數(shù)據(jù)),每一條細(xì)節(jié)數(shù)據(jù)都是穩(wěn)定的,不再隨時(shí)間變化。它是所有數(shù)據(jù)集市的數(shù)據(jù)源。這里的數(shù)據(jù)只能增加,不能修改和刪除。 這部分的建設(shè)時(shí)間往往要在對(duì)整個(gè)企業(yè)的業(yè)務(wù)流程和管理需求非常清楚的前提下才能開始。 2.更多的數(shù)據(jù)集市 今后要針對(duì)企業(yè)的每個(gè)業(yè)務(wù)部門建立相應(yīng)的數(shù)據(jù)集市。 在實(shí)施了所有業(yè)務(wù)部門的數(shù)據(jù)集市后,Baseline的建設(shè)就變成純IT部門的項(xiàng)目?!凹僆T部門的項(xiàng)目”的意思是:當(dāng)實(shí)施了所有部門的數(shù)據(jù)集市后,我們對(duì)業(yè)務(wù)部門的需求就能全面了解,此時(shí)再做一次數(shù)據(jù)“集中”,就是純IT人員的事情了。 3.元數(shù)據(jù)管理 對(duì)企業(yè)元數(shù)據(jù)(Meta Data)管理的好壞,是評(píng)價(jià)一個(gè)企業(yè)級(jí)數(shù)據(jù)倉(cāng)庫(kù)建設(shè)成功與否的最關(guān)鍵的指標(biāo)。所謂元數(shù)據(jù)管理的成功,就是任何一個(gè)元數(shù)據(jù),在整個(gè)企業(yè)中只能有一個(gè)標(biāo)準(zhǔn)或定義。 在數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)各個(gè)環(huán)節(jié)都有元數(shù)據(jù)管理問題。如在ETL過程中,有關(guān)于數(shù)據(jù)源的元數(shù)據(jù)定義,關(guān)于數(shù)據(jù)轉(zhuǎn)換的元數(shù)據(jù)定義,關(guān)于目標(biāo)數(shù)據(jù)的元數(shù)據(jù)定義;在數(shù)據(jù)建模和組織過程中,有關(guān)于表定義的元數(shù)據(jù),字段定義的元數(shù)據(jù),表與表之間關(guān)系的元數(shù)據(jù),維表定義的元數(shù)據(jù),事實(shí)表定義的元數(shù)據(jù)等; 在展現(xiàn)過程中,有關(guān)于語(yǔ)義層定義方面的元數(shù)據(jù)等。 對(duì)元數(shù)據(jù)的管理,是從開發(fā)第一個(gè)數(shù)據(jù)集市開始的。當(dāng)要開發(fā)第二個(gè)數(shù)據(jù)集市時(shí),就要首先檢查已經(jīng)定義過的元數(shù)據(jù)并加以引用。若已經(jīng)定義過的元數(shù)據(jù)無法滿足要求,則要修改元數(shù)據(jù),然后再引用。這樣當(dāng)一個(gè)個(gè)數(shù)據(jù)集市建立后,整個(gè)企業(yè)完整的元數(shù)據(jù)庫(kù)也就建立起來了。 對(duì)元數(shù)據(jù)的統(tǒng)一管理,有專門的工具幫助開發(fā)人員和維護(hù)人員來較好地完成對(duì)元數(shù)據(jù)的管理。 結(jié)束語(yǔ) 數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)的建設(shè)只有開始,沒有結(jié)束。未來上海通用汽車的IT系統(tǒng)建設(shè)的重點(diǎn)將轉(zhuǎn)移到基于數(shù)據(jù)倉(cāng)庫(kù)的應(yīng)用開發(fā)上來,本文的結(jié)果僅僅是我們?cè)谶@方面的初步實(shí)踐。隨著開發(fā)工作的逐步展開,更高形式的商務(wù)智能系統(tǒng)將逐步得到應(yīng)用。(本文作者系上海通用汽車有限公司信息部工程師) |
|