BI從ERP系統(tǒng)抽取數(shù)據(jù)解決方案解析
BI是一個數(shù)據(jù)分析的工具,而ERP系統(tǒng)則是一個聯(lián)機事務處理系統(tǒng)。這兩個系統(tǒng)之間會產(chǎn)生交集嗎?答案是肯定的。做一個形象的比喻。ERP系統(tǒng)就好像是一個油田,而BI就是一個煉油的工具。BI系統(tǒng)在煉油時,肯定需要原油。這個原油就是ERP系統(tǒng)中的數(shù)據(jù)。在這篇文章中,筆者就以SAP的ERP系統(tǒng)和BW系統(tǒng)(BI系統(tǒng)的一種)為例,分析一下如果有效的從ERP系統(tǒng)中抽取數(shù)據(jù)。
當BI系統(tǒng)從ERP系統(tǒng)中抽取數(shù)據(jù)時,用戶主要關心的是三個問題。一是數(shù)據(jù)抽取是否完全,二是數(shù)據(jù)抽取是否準確,三是數(shù)據(jù)抽取是否及時。如果能夠確保這三個問題都不成問題了,那么這個數(shù)據(jù)抽取的解決方案就是成功的。
在實際工作中,一般數(shù)據(jù)抽取可以分為兩個部分。一是初始化抽取。在這個部分中,往往是采取完全抽取的方式。即將ERP中的數(shù)據(jù)全部抽取到BI中。如果企業(yè)ERP運行的時間比較長,這個抽取的過程會比較漫長。如筆者做過一個項目,這個數(shù)據(jù)的初始化抽取工作就會了2天時間。二是后續(xù)的抽取。當***次抽取后,數(shù)據(jù)會有變化。
對于這些變化的數(shù)據(jù),一般不會采取完全覆蓋的方式。即不會將已經(jīng)抽上去的數(shù)據(jù)清除,然后重新來過。如果這樣做的的話,傳輸?shù)臅r間會比較長。通常情況下,我們采用的方式增量更新的方式。簡單的說,就是只更新上次更新后未更新的數(shù)據(jù)。
如果采用增量更新的話,那么項目管理員只需要關心捕獲、運輸和融合三個話題。捕獲表示系統(tǒng)如何判斷數(shù)據(jù)是否更新、是否有刪除等等;運輸表示數(shù)據(jù)如果傳遞到BW上去;融合指的是新舊數(shù)據(jù)如何對接等等。在SAP的解決方案中,對此都有比較詳細的處理方式。
二、系統(tǒng)初始數(shù)據(jù)抽取
在實際項目中,一般都是先有ERP系統(tǒng),然后再上BI項目。這就好像是煉油。一般都是先有原油,然后再進行提煉。而且BI項目其分析的一般都是3-5年的數(shù)據(jù),為此ERP系統(tǒng)中的數(shù)據(jù)量已經(jīng)比較多了。
為此***次數(shù)據(jù)的抽取,所需要花的時間是比較多的。如上圖右面的分支所示,就表示在SAP系統(tǒng)中***次如果從系統(tǒng)中抽取數(shù)據(jù)。為了保障數(shù)據(jù)抽取的準確性與高效性,SAP專門為BI系統(tǒng)準備了一張SetUp表。這張表是根據(jù)BI系統(tǒng)的需要而設計的。通常情況下,SAP中的數(shù)據(jù)BI系統(tǒng)可能只需要50%即可。所以這張SETUP表是為BI系統(tǒng)量身定制的。數(shù)據(jù)要比原系統(tǒng)的數(shù)據(jù)要少。
在數(shù)據(jù)抽取之前,一般需要先對SetUp表進行清空。以防止該表中原有數(shù)據(jù)與需要導入的數(shù)據(jù)出現(xiàn)沖突的清空。清空之后,再將源系統(tǒng)中的數(shù)據(jù)導入到SetUp表中。通過中間表SetUp,可以過濾到一些BI系統(tǒng)用不到都是數(shù)據(jù),以提高數(shù)據(jù)抽取的效率。將數(shù)據(jù)抽取到SetUp表之后,再通過工具將數(shù)據(jù)傳輸?shù)紹I中去。
三、增量更新處理方式
后續(xù)的數(shù)據(jù),一般都是通過增量更新的方式。如在實際項目中,都會設置一個批處理作業(yè)。在晚上下班后,讓系統(tǒng)自動將一天之內(nèi)更新的數(shù)據(jù)傳輸?shù)紹I中。此時就遇到一個問題,系統(tǒng)如何來判斷,哪些數(shù)據(jù)時更新過的呢?注意,這個地方的數(shù)據(jù)更新其實包括三方面的內(nèi)容。分別是數(shù)據(jù)更新、數(shù)據(jù)刪除和新建數(shù)據(jù)。
針對這個內(nèi)容,在SAP系統(tǒng)中其實又提供了兩種方式。
一是增量隊列式。如上圖所示,在SAP中專門有一個ExtractionQueue表。當SAP系統(tǒng)中數(shù)據(jù)有更新時,系統(tǒng)會將數(shù)據(jù)寫入到SAP基礎表的同時寫入到這個表中。也就是說,這個表中的數(shù)據(jù)就是最近所更新的數(shù)據(jù)。需要注意的是,這個表中的數(shù)據(jù)一般保存的是最近更新的和最近一次更新的。系統(tǒng)會在記錄中做一下標識來判斷數(shù)據(jù)是否已經(jīng)傳輸?shù)搅薆W中去。一般的IO數(shù)據(jù)抽取,都是采用這種方式。
二是采用時間戳的方式。即系統(tǒng)在數(shù)據(jù)更新時,會記錄數(shù)據(jù)更新的時間。這個時間往往是精確到秒的。然后系統(tǒng)中另外有一個地方會記錄系統(tǒng)上次抽取數(shù)據(jù)的時間。然后這次數(shù)據(jù)抽取時,其就會將這兩個時間進行比較,然后將晚于這個時間的數(shù)據(jù)全部抽取上去。通常情況下,財務相關的數(shù)據(jù),都會采用這種方式來抽取。
也就是說,系統(tǒng)中可以允許同時存在這兩種數(shù)據(jù)。到底是用甚么樣的數(shù)據(jù),就要看用戶的需要而定。不過一般情況下,物流相關的數(shù)據(jù),推薦是用增量隊列的方式。而財務相關的數(shù)據(jù),則采用時間戳的方式。
這另外需要提醒的是,上圖所示的ExtractionQueue與DeltaQueue表其實是同一張表。在表中,會有一個字段來標識其到底是屬于哪一張表中的內(nèi)容。也就是說,上圖中所顯示的表一般是邏輯表,而不是實體表。另外,系統(tǒng)還會額外的提供兩張控制表,來確保整個增量更新作業(yè)的準確性。
四、項目的建議
在實際項目中,從ERP抽取數(shù)據(jù)要比上面所話的圖復雜的多。除了要掌握上圖的基本理論之外,筆者認為在數(shù)據(jù)抽取時,還需要關注如下內(nèi)容。
一是要充分認識到從BI系統(tǒng)中抽取數(shù)據(jù)的重要性。在實際項目中,雖然有時候也需要從文本數(shù)據(jù)中獲取數(shù)據(jù),但是這個比例并不是很高。在筆者遇到的項目中,一般文本類型的數(shù)據(jù)只有10%左右。大部分的數(shù)據(jù)都是來源于ERP系統(tǒng)。為此從ERP系統(tǒng)中抽取數(shù)據(jù),無論是BI系統(tǒng)設計者、還是企業(yè)用戶,都是無法避免的一個課題。
二是需要注意,數(shù)據(jù)抽取等系統(tǒng)本身性能的沖擊。如上所示,如果采用增量更新方式的話,系統(tǒng)除了要往基礎表中寫入數(shù)據(jù)之外,還需要向另外一張額外的表中寫入數(shù)據(jù)??梢姡@會增加服務器的負擔。
特別是當數(shù)據(jù)量比較多時,會還用比較多的系統(tǒng)資源。為此在數(shù)據(jù)抽取時,要關注對系統(tǒng)本身性能的沖擊。一般情況下,都會采取一些措施來避免這種情況。如可以合理安排數(shù)據(jù)抽取的時間,將其放在用戶使用量比較少的時候。像在SAP系統(tǒng)中,其采用的是中間表的方式,來減少數(shù)據(jù)的傳輸量。
三是需要注意,對于SAP系統(tǒng)來說,那面這些表,是系統(tǒng)專門為BI系統(tǒng)所準備的。即在系統(tǒng)安裝時就已經(jīng)存在了的。只是系統(tǒng)沒有啟用而已。當企業(yè)用戶需要使用BI系統(tǒng)時,需要通過事務代碼來激活這些表。否則的話,就無法使用。上圖中所顯示的表格都是邏輯表,實際表的結(jié)果要比這個要復雜的多。不過作為BI的事實顧問來說,只需要掌握這些邏輯表即可。對于其后臺的基礎表,讓SAP的技術人員去了解即可。
四是DeltaQueqe的方式。對于BI系統(tǒng)來說,DeltaQueqe其實提供了三種方式。其中比較常用的就是DeltaQueqe方式(上圖所示的方式)和DirectQueqe的方式。其中前者對于性能的沖擊比較小,因為有中間表的過濾。而后者對于系統(tǒng)性能的沖擊比較大。在后續(xù)硬件跟的上的情況下,采用DirectQueqe的方式也未嘗不可。不過筆者建議,在現(xiàn)階段,還是采用DeltaQueqe方式為宜。
通過上面的分析我們可以知道,SAP的從ERP系統(tǒng)中抽取數(shù)據(jù)的解決方案,相對來說是比較合理科學的??梢越鉀Q數(shù)據(jù)傳輸過程中捕獲、傳輸、融合等方面的問題。無論是項目管理員還是開發(fā)人員,都值得借鑒這種處理方式。
【編輯推薦】