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