SAP Data Modeling 基本概念與術語
這一篇我們會討論到在SAP BW/4HANA的modeling objects以及它們是如何組成成為我們資料分析的一部分。我們會從資料的virtualization layer到 persistency layer。使用過SAP BW的人都知道SAP BW的object型態有很多容易搞亂,而SAP BW/4HANA將其簡化了只有4種型態。
Modeling perspectives
使用過SAP BW的人一定對 Transaction RSA1一定很熟悉,這個transaction會access到SAP BW administrator WorkBench(如下圖),在這邊完成所有Data Modeling的工作。
上圖我們可以看到modeling的功能圖示,但若是SAP BW/4HANA WorkBenchru就已經沒有這個圖示了(如下圖)
這是因為modeling的功能在 BW/4HANA這邊已經把這個功能移到以Eclipe-based的HANA Studio工具上了。不過這並不表示transaction RSA1沒有用了,它還是能做modeling以外的其他事,像是 data load control / monitoring / authorization definition / data source maintenance.
使用SAP HANA Studio做modeling第一步我們要先切換到BW Modeling的模式,如果沒有BW project我們就要新建一個BW Project(如下圖)。你會在這個project看到InforArea(一個類似資料夾的結構),裡面都是在建模過程中會用到的。
如果把滑鼠移動到 BW Repository按右鍵的話你會看到這些選項
DataStore Objects (Advanced)
InfoSource
InfoObject
Open ODS View
InfoArea
Semantic Group
CompositeProvide
Open Hub Destination
Data Flow
Modeling Objects
上面我們看到了這些選項(objects)每一種的功能不盡相同。但在此之前我們先來比較一下這些objects與舊版的SAP BW有哪些不同。下圖為SAP HANA/4HANA的objects與它們的modeling purpose
另外我們看一下在SAP BW的objects與它們的modeling purpose(如下圖)
我們可以看到SAP BW/4HANA的objects與modeling purpose比舊版的簡化了很多,下圖中我們可以比較一下從BW objects到BW/4HANA objects的對應
下面我們來一一講述每種的objects
InfoObjects
這在BW and BW/4HANA唯一沒有變的Objects。我們前面提到這在SAP BW or SAP BW/4HANA是最小的單位。它是為了其他的data modeling 所建立的一個blocks.如果你定義出一個InfoObjects set(一個desired information),哪這個InforObject set就可以是 CompositeProvider 或是 Advanced DSO。InfoObjects有四種基本型態:
Characteristic
key figure
unit
XXL
Characteristic是一個contextual elements, key figures代表在data medeling中的metrics,Units是一種標準化的參考在兩種不同單位的數字間做比較,XXL是一個給ABAP會用到的Objects主要是給很長的字串(可以有1,333字元)使用。
這邊舉一個銷售資訊的例子。我們有兩筆銷售紀錄分別是 $1,200,000與 $200,000,就看這兩個數字對銷售資訊有甚麼意義嗎?其實光看這兩個數字根本看不出來,因為這只是兩筆數字我們還沒有賦予它們contexttual information(Characteristic)。然後也不知道這兩筆數字的單位(units)是甚麼,所以我們可以這兩個數字 1,200,000是美元,200,000是歐元。這時我們就有了比較的基礎,以匯率來換算1,200,000美元大於200,000歐元。但這只是兩個貨幣的比對,對整個銷售資訊來說還是看不出甚麼。如果這時我們可以加入時間性的characteristic,如果以月分來分我們說1,200,000美元是一整年度的銷售金額平均每個月是10萬美元,而200萬歐元是單一個月的銷售金額。這時如果我們再加入更多的characteristic,例如銷售的客戶ID,產品項目,銷售區域等等。我們就可以對銷售資料看到更多的資訊。這些資料資間所交集出來的資訊我們稱為InfoProviders。InfoProvider是經過分析的流程後所產生出代表一群不同資料型態InfoObjects。
Characteristics
Characteristic InfoObjects 是一個 contextual elements,是為了賦予資料的metric有意義的(如上面所提的例子)。Characteristic在BW/4HANA中可以基於ABAP dictionary的5種資料型態,分別是
1.CHAR--文字字串
2.NUMC--數字型的文字
3.SNUMC--Signed numerical characteristics
4.DATS--日期(格式YYYYMMDD)
5.TIMS — 時間(格式HHMMSS)
上面說的這些都可以在HANA studio的InfoObjects type中看到(如下圖)
當ABAP程式使用這些table data時,系統會根據ABAP資料類型轉換成其內容的內部格式以供資料視覺化時使用。以下圖表描述這5種資料型態的output template與字元長度限制
在我們定義完InfoObjects的data type之後,下一步我們就要針對該InfoObjects決定它的general properties。在HANA studio的介面中(General tab),我們會看到如下圖的幾種的property(與其定義)
SAP BW/4HANA characteristic InfoObjects 可以是簡單的 fields或是複雜的master data objects,這一切都基於整個entity-relationship models。簡單的field可能是郵遞區號或街道的號碼,這些簡單的characteristic組成客戶的地址。然後可能根據這些簡單的characteristics當作成是主要的特徵客戶的attributes。底下我們根據客戶的attributes跟characteristic 製作成一個entitity-relationship model
SAP BW/4HANA InfoObject characteristics除了當成attribute之外,我們也可以把它設定成texts或是hierarchy tables。 Texts可以針對一些key values做一些文字性描述,而Hierarchies是一個根據characteristics的key values產生的樹狀結構,通常用於報告中的匯總和分類目的。
所以characteristic InfoObject的Attributes/texts/hierarchies在我們定義InfoObjects時可以對應到Master Data/Texts/Hierarchies properties(如下圖)
另外在Mater Data/Texts tab(如下圖),我們可以對Texts table key設定複合性的參數,允許multilanguage descriptions and time validity。要做到這兩點就要分別選取Language-Dependent與Time-Dependent。
上圖我們可以看到三種Text的長度 Short/Medium/Long,它們的字元長度最長分別是20/40/60-1333。而要達到1333的字元就要選取Long Text Is Extra Long,而這種的data type會是 SSTRING。
另外在Hierarchies tab(如下圖)可以設定dependency(Version and time)。如果是version它會apply到整個structure,如果是Time則可以選擇你是要apply到整個structure level 或是 header level。
另外Attributes tab,如之前說過可以關聯其他的characteristic當作attributes,如下圖
Attributes在這邊有兩種, Navigation and Display。如果是Navigation attributes ,它是被使用在Query level中的 Slicing and dicing。而Display就只在reports時針對characteristic vlaue顯示這個attribute。
XXL Objects
這是一個特殊的Objects,它可以通過MIME type進一步指定檔案的格式與內容。MIME是由兩個部分組成的標準化規範,而基於這兩個部分析系統可以根據接受到的XXL attributes來決定收到的是什麼檔案類型,例如可能是Audio/Video/Image等,所以這是一個儲存大的資料內容(Audio/Video/Image)。而在XXL Objects有以下兩種data type(如下圖)
如過是指定成CLOB就不用再設定其他參數了,因為系統就會認定這個檔案類型是一個文字檔案。如果是BLOB的話則必須透過MIME指定是哪種類型資料, SAP BW/4HANA支援下多種類型的檔案
image types (PNG, IMG, BITF, PFX, etc.)
video types (MPG, AVI, QT, VDO, etc.)
Microsoft types (DOC, PPT, XLS, RTF, etc.)
Adobe PDF, AutoCAD (DWG)
Key Figure
這是在data models中會用到的mertic型態,mertic可能是Amount/quantity/integer/number/date/time。為了適應這些選項,有八種不同的資料類型適用於key figure(如下圖)。
而key figure type 與 Data type的關係如下。當你選擇key figure type時,HANA會自動限制你可以用的data type。例如你選擇 Integer你的data type只有 INT4 and INT8可以使用。
在定義key figuration時,我們可以針對要產出reports(sum, minimum, maximum, no aggregation)時aggregation procedurex來固定或動態的產生display behavior(如下圖)
除了一般性的key figure設定外,NW/4HANA還提供了四種額外的properties分別是
“Non-Cumulative” and “Stock Coverage”
以上兩種通常用於庫存管理
“High Precision” and “Attribute Only”
Non-Cumulative是在一段的週期對stock position做snapshots。
Stock Coverage決定了計劃或預期需求的供應週期數。
High Precision是使用 analytical engine計算出有小數點的數字而非用四捨五入。
Attribute Only只有在作為其他characteristics的attribute使用,而不是用在report calculation。
Unit
Unit InfoObjects是與key figure產生關連性。在這些ket figure的vlaue之間設置測量標準,從而進行正確的比較和轉換。Unit有兩種data type(如下)
InfoProviders
InfoProvider是一個modeling objects。這一種objects是包含了measures與contextual的elements而產生出來的特定的的資料View。舊版的SAP BW的InfoProvider的modeling只能限制使用InfoObjects來建立,在Data Provisioning階段我們還要先把inbound data關聯成InfoObjects後才可以使用,而這樣會多很多額外的工作要做。而新版的BW/4HANA除了使用InfoObjets之外,還可以選擇field-based mode-ling。這是可以從external source選擇要哪一個field來建立InfoProvider model。
直接使用external source的Field-Based modeling就少掉在Data Provisioning階段還要將資料關聯成為InfoObjects。使用field-based or InfoObject-based modeling的關鍵在於你的report有沒有要使用到InfoObjects中的attributes, hierarchies, and descriptions這一些features。如果有要使用哪就還是回到老方式在Data Provisiong階段將這些features關聯上去。但若是你只是想要快速的資料分析或prototyping甚至是隔離型的數據分析,哪麼Field-based會比較有效率。
Open ODS Views
這是一種描述external datasource資料結構的metadata objects,如同它的名字是nonpertsistent的。主要是使用在Data virtualization與關聯 external data source與既有的InfoObjects。Data source的來源可以非常多樣,從SAP HANA table到第三方的資料。create一個open ODS view的方式跟其他的InfoProviders一樣在InfoArea的地方按滑鼠右鍵就可以create一個新的open ODS view。在create時最重要的是定義”Semantics”與”Source type”(如下圖)
我們在Semantics看到三個選項,
Facts —將允許定義一種結構,該結構包含用於key field section(用作record key)和data field section(其中可以將其他key figures, currency, and unit一起)添加到modle裡。
Master Data — 將允許定義一個結構,該結構由通常與master data tables相關聯的元素組成,包括需要time-dependency的情況下的key,attributes,text和有效fields。
Texts — 將允許定義通常由與text tables相關聯的元素組成的結構,包括language key,columns有短,中,長的texts,以及需要time-dependency的情況下的有效性fields。
而在Source type的四個選項,這是指你要連結的資料來源型態是哪一種。
Database Table or View — 這是連結到HANA DB的任何一種schema。也可以透過HANA SDA(smart data access)連結到Virtual table因此可以remote使用到non SAP data。
DataSource (BW) — 直接連結既有的SAP BW data source. 這個方式直接連結現有的SAP系統(例如SAP Business Suite, SAP BW)或是SAP系統後端的DB連結。
Transformation — 這種就很像ETL工具的處理,再從data source 的Open ODS view中做了一定程度的資料處裡。
DataStore Object (Advanced) — 直接access SAP BW Advanced DSO InfoProviders。Advanced DSOs是一個在BW/4HANA modeling中主要會用在 data-persistent repositories中。
Advanced DataStore Objects
ADSO在SAP BW/4HANA是data persistency layer中的主要的objects。這是一個具有高度彈性的modeling objects能夠適應不同的data retention scenarios,包括data overwriting, additive behavior, 與 change log-based delta processes。
ADSO包含了三種tables: inbound table, active table, and change log. 在ADSO的modeling properties設定中會根據data retention requirement產生相對應的三種tables中的其中一種。
ADSO建模的可用選項集中在data-writing procedure以及如何“針對潛在變化”更新現有資料內容(由inbound data觸發)。inbound data通常都是將資料寫入inbound table,而再將inbound table的資料寫入/轉換到active table這個過程中會有activation/compression。activation會產生change log並存放在change log table。
下圖為ADSO的選項,左手邊為modeling的選項而右手邊為model template的選項。如果選擇預先定義好的template相對應的modeling properties(左手邊的選項)也會自動地被設定。當然若沒有適合你用的template哪麼手動選擇modeling property也是可以的。
接下來我們每一種modeling的選項與ADSO三種tables的關係。
Activate Data
這是告訴ADSO資料要從inbound table移動到active table,這中間的過程剛剛有提到是activation/compression(如下圖)。這時如果單獨選取這個選項的話change log table便不會產生。
Activate Data/Write Change Log
當選取Active Data並選取Write change log,這個選項是當inbound table有新的或變動的資料都會從inbound table到active tabel,並將這個變動寫到change log table(如下圖)。
Activate Data/Keep Inbound Data, Extract from Inbound Table
這個選項ㄧ樣會從inbound table移動到active table,但不會有change log table產生。資料在inbound table異動一樣會移動到active table,但就不會有紀錄。但這樣在做資料分析時只會有最新的這一份而看不到資料的歷史變化。
Activate Data / Unique Data Records
這個選項將不會檢查inbound record是否已經存在於active table中。也沒有aggregation的功能,inbound data set的資料不會有重複(如下圖)。
Activate Data/Snapshot Support
這個選項要搭配 Write Change log的選項。這是大範圍的資料載入,意思是每一次的資料移動都是以一整個data set移動而不是by record.兩個data set到了 active table也不能aggratation(如下圖)
Special Type/Direct Update
此種方式是透過API直接將資料載入到active table,不會有inbound table跟change log table(如下圖)
Special Type/All Characteristics are Key, Reporting on Union of Inbound and Active Table
ADSO在這個選項中會讓所有的characteristics變成是key section的一部分,也因此不會允許overwrite已經存在的records,任何delta load都會被視為是累加的。這個選項像是舊版的BW系統,ADSO扮演的就是 InfoCube的角色(如下圖)。
Special Type/Planning Mode
這個選項要有作用要連同"All Characteristics are Key, Reporting on Union of Inbound and Active Table"一起選才可以。當選擇了這個選項時會跳出另一個Inventory的視窗(如下圖),一個有關inventory的參數設定。
這包含了noncumulative nature of inventory key figures以及validity characteristic 的相關list。此選項除了有"ll Characteristics are Key, Reporting on Union of Inbound and Active Table"的既有功能外,還多了pointers for point-in-time, inventory positions的snapshot(如下圖)
Modeling Properties不做任何設定
此設定中ADSO只會產生inbound table,這個inbound table會是fields或是InfoObject的資料屬性。如果是field modeling,哪ADSO扮演的角色會像是data-acquisition layer,充當成external data的平台而且不會與既有的InfoObjects做關聯。
如果是使用InfoObjects來做modeling,則其本質上將類似於通過關聯的master data table增強的corporate memory layer(如下圖)。
根據上面說明的這些選項,SAP BW/4HANA已經有相對應的Model template可以使用了,而這些template通常已足夠應付大多要modeling的場景,參考如下表列。
CompositeProvider
是一個本質上nonpersistent的metadat objects。其主要目的是一個能夠結合不同的資料來源的邏輯層作為reporting與analysis之用。CompositeProviders主要對SAP BW/4HANA的InfoProviders/views使用SQL語法的join/union操作。因此,建模複雜性對於report user是透明的。CompositeProviders也可以被加入到另一個CompositeProviders裡。
總結
SAP BW/4HANA是使用以Eclipse-based 的圖形工具來做data modeling。這一篇我們從modeling的最小單位InfoObjects到InfoProviders,包含 Open ODS views(主要使用在 external source 的 data virtualization)。ADSO是對應data persistency,而CompositeProviders則是對應到logical layer。