SAP BW/4HANA 的ETL

Extraction, Transformation and Loading

SAP BW的解決方案中最大的一部分的挑戰來自取得各種不同來源的資料,從SAP其他的解決方案到其他第三方非SAP的資料(例如big data in Hadoop)。簡單的來說就是SAP的ETL(extraction, transformation, and loading)工具。以下表列出目前SAP ETL tool可以支援的來源資料系統\

SAP applications

使用SAP的Operational Data Provisioning (ODP) 框架來取得來自SAP source systems的資料。這個框架可以讓你將資料從SAP repositories取得資料,看是使用Service Application Programming Interface (S-API) 或是Operational Delta Queues -ODQ)。前者S-API是常用的方式,後者ODQ則是包含了SAP Data Services的連結。

Database source systems

通常是非SAP system的資料庫,透過ODBC來取得資料。SAP提供的ODBC稱做HODBC (SAP HANA ODBC)。你也可以使用SAP HANA smart data integration (SDI) and SAP HANA smart data access (SDA) frameworks取得資料。

Local or tenant database

資料來自本地資料庫或是tenant DB,是HANA可以直接連結取得的。

SDA(Smart Data access) / Big data source systems

SDA是一種Framework讓你可以連結到不同的data source(也包括了Big data)。除了批次載入資料也能使用串流資料將資料以近乎及時將資料從來源端源源不絕的將資料載入。

Files

可以把CSV或是 Excel的檔案匯入BW/4HANA DB中

Operational Data Provisioning 框架

上面我們提到BW/4HANA在transfer data時若是資料來源是SAP 的系統時可以使用ODP框架。ODP是透過RFCs 或 Simple Object Access Protocol (SOAP) web services將資料extraction 與replication到SAP BW/4HANA中。ODP也可以讓你使用SAP Landscape Transformation replication server以real time的傳輸資料。 ODP框架會使用BW/4HANA提供的SAP Landscape Transformation server 或DataSources在SAP source system中create一個data transfer queues.ODP框架在這個架構中就像是一個central component來控管這個queues(如下圖)

在這個框架中我們看到兩種角色: providers and consumers。Provider負責傳送資料,而consumers負責接收資料。但providers and consumers可以不是一對一個關係,Provider可以同時傳送給不同的目標。在ODP框架中這種一堆多的關係我們稱為subscriptions,Provider對應到不同的consumers都會有一個相對應的data transfer queues(由ODP queue management管控)。
另外ODP也有Queue Monitor的功能(透過Transaction ODQMON)來監控delta queue processing的狀態還能做一些管理工作(像是clean up queues)。

在Create source時我們有如下三種選擇

SAP BW/4HANA Data Sources

DataSource是SAP BW/4HANA objects,這個object一個rules/parameters/fields的colletion。可以讓你從soruce system去access or extract data並copy到SAP BW/4HANA。DataSource type有以下三種
Transaction data
Master data (attributes, texts, hierarchies)
Segmented data
當設定完成 Data source的設定後會有一個設定結果(如下圖)

其中在Overview這個頁籤中 關於 General Properties的選項

DS for Data Reconciliation
這個選項是讓你直接access由 data provider提供的資料並且在SAP BW/4HANA的 Virtual Provider中是available的。這個可以讓你很容易的實現從來源端到目的端的 data consistency check.

Opening Balance
用於對InfoProvider中的noncumulative key figures執行initial load

Data Is Language-Dependent
可避免在傳輸到SAP BW / 4HANA的 data 具有語言依賴性時避免資料重複或資料遺失。 在這種情況下,data source必須具有一個field以標識記錄的語言。 在SAP系統中,語言的標準fields是LANGU和SPRAS

Data Is Time-Dependent
避免在將數據傳輸到SAP BW / 4HANA具有時間依賴性(例如有效期)時避免資料重複或資料遺失。 在這種情況下,data source必須至少具有一個field來定義記錄有效期的下限或上限。 在SAP系統中,有效期限制的標準SAP fields為DATEFROM和DATETO。

Delivery of Duplicate Data Recs
這個indicator的設定在 data load期間處理重複記錄時DataSource的行為。 此處的選項為Undefined,None和Allowed。除了Undefined選項外,必須在DataSource中設置將用作驗證重複記錄的primary key 的fields

另外在 Extraction 頁籤則會有這些選項

Delta Process
這是定義資料的處理模式。會有三種,
1. Delta, Only Full : 按資料的原樣傳輸但可以使用filter來提取想要的資料.
2. Overwrite Delta without Deletions : records會隨所有key figures和characterics的new values/status一起傳輸。 資料的選擇基於在此DataSource中設置的delta pointers 和條件,並複製到source system.
3. Pure Additive Deltas: records 僅帶有對key figures的修改,而不是其最終值的修改。 最終值可以通過在load過程中或在reporting過程中對target object進行aggregation來計算。

Data Access
定義DataSource是否可以建立對source provider的直接access以及data extraction期間可以對data執行的其他操作

Streaming
定義 Data Source是否需要 stream data

Adapter
將資料從 data source到BW/4HANA的方法

Extractor-Specific Properties
包含有source system 和將object發送到DataSource的對象的訊息。 可以根據需要修改source object

ODP DataSources介紹

這通常是create 在 SAP source system裡並且它們的 metadata 會被複製到 BW/4HANA中。基於 metadata replication, 你可以在 BW/4HANA中手動的create ODP DataSource並且在create過程中連結在SAP source system中可用的ODP provider

SAP BW/4HANA Data Flows

視覺化的資料流程,如下圖

基本上就是一連串的資料整理/匯出最終轉變(transformation)成你要的資料。每個node上執行你想要的資料轉換方式。但怎麼轉變呢?這就需要設定規則與設計邏輯來consolidate, cleanse, 與apply business rules以期能將資料從源頭端到目的端。例如下圖在其中一個node執行Transofrmation

在執行 Transformation 過程中,我們有四個主要階段可以將規則套入

  1. Record transformation之前:
    在資料還沒進到目的端時做轉換。這套規則是通過“Start Routine”應用程序按鈕創建的programming routine。

2. Record transformation期間:
在target structure 中create data時,可以create 一組規則,以在對每個recrods進行轉換期間將其應用於data的每個fields。 這套規則在每個fields mapping內運行,並具有以下選項

– No Transformation
Keeps the target field set to null or unassigned value.

– Constant
Allows you to apply a constant to the target field.

– Direct Assignment
Moves the data from the field indicated as a Source Field of the Rule to the Target field of the Rule.

– Formula
Allows you to create a formula using a wizard.

– Read Master Data
從 InfoObject provider中讀取values — 例如,如果source fields是“Customer Group”,並且你想要檢索要存儲在此規則的目標InfoProvider中的Account Group

Read from Data Store (Advanced)
允許你在ADSO上執行查找,以根據ADSO的key檢索信息。 例如,從“銷Sales Order number”作為規則的source fields,你可以讀取“Sales order HeaderDSO”詳細信息,並將銷售訂單類型存儲在此規則的目標InfoProvider中。

– Routine
當需要更複雜的邏輯將data從該規則的source fields list map到target fields時,可以create programming routines

3. record transformation之後
在create target structure中的data之後和aggregation operation之前,你可以create一組規則以應用於target structure中的available data。 這組規則是通過“End Routine”應用程序按鈕create的programming routines

4. Aggregation operations
可以為轉換中的每個numeric field定義aggregation operation。 這些操作是“Overwritye”或“Summation”。 Overwrite用ADSO上的相同key 替換記錄的key value,而Summation對這些key value執行加法運算。 它們是在target structure創建中的data完成後執行的,也就是說,在轉換中的“End Routine”過程之後(如果存在)。

ABAP Managed Database Procedures

有使用過SAP BW的人都知道 AMDPs(ABAP Managed Database Procedures)這一項功能可以被使用。同樣的AMDPs也可以被使用在HANA上。當使用AMDP時系統會create ABAP class會與transformation routine關聯起來。

Class 定義
會有多種不同的宣告(declarations)被用來mapping到routine, 當你寫code並定義 PROCEDURE 時。這個方式會接收從source端來的values(透過 InTab parameter), 經過計算後將vlaue回傳回去(透過outTab parameter), 並且回傳需要被送回到error handler(透過errorTab parameter)所有的錯誤訊息.

在使用PROCEDURE方式實作時你可以加入你的邏輯。下圖為一個金額的匯率換算範例。 從source structure來的總額(AMOUNT)跟匯率(FFACT) 的field會被對應到目的端的AMOUNT field.

SAP BW/4HANA 資料載入

BW/4HANA的資料載入是透過DTPs的方式,DTPs產生的程序具有多種設置,可從source systems提取,收集和處理數據,並將數據直接發佈到目標的InfoProviders(根據source 與 target InfoProvider 的 transformation的定義)。

DTPs能夠使用平行處理程序強化資料載入的處理效能。你甚至可以使用多個DTPs來同時對同一個transformation將delta processes 與full load processes分開,並應用不同的filters來處理。

所謂full load processes是指整個來源端的dataset會被如實的傳輸到目標資料庫中;在delta mode中僅傳輸自上次資料傳輸以來post到source transfer. 多個target可以通過一個source的不同delta process來傳送,因為DTP具有管理機制來控制這些delta loads.

在舊版的SAP BW system中,你使用 InforPackages從來源端來讀取資料並將資料儲存在PSA中之後才將資料傳輸到目標InfoProviders. BW/4HANA則是透過DTPs將資料直接從來源端傳輸到目的端而不需要再特別指定PSA。DTP還允許你執行delta initialization而無需進行data transfer.

創建 DTPs

有好幾種方式來創建DTPs
1. 在data flow 中的target object 按滑鼠右鍵並選擇 DTPs / Create DTP
2. 在Project Explorer 的target object 按滑鼠右鍵選擇 New / Data Transfer Process….,在這個選項中你必須選擇來源端
3. 在 main menu 中 File/ New / Other Business Warehouse / Data Transfer Process。 這個選項需要選擇來源與目的端
4. 透過 Transaction RSPC的 process chain

在確認了source / target providers後, DTP的維護畫面中的Extraction tab就需要設置(如下圖)

在Extraction tab上面的這些資訊是dat transfer process中所show出的資料。check availability是檢查這一個DTP是否可以被執行,假設是檢查後是可以執行的哪麼你就可以開始設定Extraction tab的屬性來增強DTP處理載入資料的效能。
參數設定的選項有

Filter
讓你限制從來源端的資料選擇

Semantic Groups
從來源端傳輸資料時,你要group data 時在同一個package 使用相同的key。這個意味著在一個package中的 records數量將會非常接近在DTP中所設立的限制。例如,在splitting of the package 或是 parallel processing處理期間,將sales document line item保持在一起。

Extraction Mode
定義資料被取出時是使用 delta mode or full load mode。使用full mode DTP支援 CompositeProviders 為source, delta mode 雖然也支援 CompositeProviders 為source但只能有Advanced DSOs.

Request Selection
可以指定要initialize the delta 而不進行數據傳輸。 當有大量的歷史數據無法在single request 中收集在一起時,這個功能就很有用。一旦在source system 上設置了delta pointer,就可以通過為這些臨時滿載創建另一個DTP來執行部分滿載以傳輸歷史數據(如有必要).

Parallel Extraction
資料傳輸是平行處理或順序性處理

另外在 Execute tab中有幾個重要的參數需要在這邊特別提及

Technical Request Status
這個設定是設置如果log中有警告出現哪要將狀態設定為紅色或綠色

Overall Status of Request
允許你手動或自動設置request的整體狀態。如果整體狀態是手動設定的,則即使DTP執行成功完成或出現錯誤,該狀態最初也保持不變。因此,在user或process chain step(Quality Status/Set Data Release)將總體狀態手動設置為successful之前,成功發布的請求中包含的數據不會發布以進行報告或進一步處理

Automatically Repeat Red Requests in Process Chains
指定在process chains中執行DTP時是否應自動重複錯誤request。 因此,如果設置了此屬性,則先前包含錯誤的request將被自動刪除並啟動一個新request,從而同時處理新data和以前出錯的data。 否則, DTP會有錯誤而結束資料處理,因為只有在先前的request沒有錯誤的情況下,才可能對目標進行新的data load。 在這種情況下,你可能需要在重複DTP之前解決上一個請求中的錯誤。

Processing Mode
除了由系統自動確定的background process之外,還允許你為DTP執行定義其他選項。 您可以選擇以下模式
No Data Transfer; Delta Status in Source:
Retrived用於將InfoProvider source中的現有data設置為已在此transfer中處理
Serially in the Dialog Process (for Debugging):
當你要模擬DTP以debug code 並在程序中定義的breakpoints處停止時使用

--

--

運用"雲端服務"加速企業的數位轉型願景
運用"雲端服務"加速企業的數位轉型願景

Written by 運用"雲端服務"加速企業的數位轉型願景

我們協助您駕馭名為"雲端運算"的怪獸,馴服它為您所用。諮詢請來信jason.kao@suros.com.tw. https://facebook.com/jason.kao.for.cloud

No responses yet