標籤:
本篇開始會一個三口之家的家庭財務資料庫為例,講述Essbase的功能和開發。為了說明EPM應用程式的管理和開發過程,會繞一些彎路,不使用EAS,而盡量用EPMA。
建立應用程式
首先登陸到Workspace,在左上方菜單中選擇【導航】>【管理】>【應用程式庫】。
應用程式庫是EPMA的一部分,通過它可以管理EPM和Essbase應用程式。開啟應用程式庫後,在Workspace菜單中選【檔案】>【建立】>【應用程式】,接著會出現應用程式建立嚮導。
在應用程式建立嚮導的第一步,選擇應用程式類型為【Essbase (BSO)】,選中【Unicode】以支援中文,然後給應用程式和資料庫命名。
建立一個名為“HomeFinancial”的應用程式,每年的家庭財務資料作為一個資料庫,2013年的資料庫命名為y2013。
第二步需要選擇資料庫中包含的維度類型,按下表建立4個維度,維度名稱同時也是1代成員名稱,在Essbase中,Time和Account是兩個比較特殊的維度。Time維度可使用時間相關的函數和動態時間序列;Account可使用時間平衡和開支報告屬性。每個資料庫中僅能有一個Time和一個Account維度。
下一步是定義中繼資料,包括維度結構、計算方法、成員屬性等。在部署後,EPMA中定義的中繼資料會成為Essbase的大綱。此步驟的介面分成三個部分,左面列出的是樹型的維度結構,右面顯示維度成員的屬性,下面顯示的是系統訊息。
在樹型維度結構部分,最頂級的節點代表資料庫;其下一級是各維度1代成員,同時也代表整個維度;1代成員下是維度成員。選擇樹型結構中的節點,右方會顯示相關屬性,修改屬性後別忘了點擊上方的儲存鍵。
在樹型結構中,選擇各維度1代成員,如下表修改維度Dimension Storage Type和Dimension Sort Order兩個屬性。Dimension Storage Type定義為儲存類型是稀疏(Sparse)還是密集(Dense);Dimension Sort Order定義部署後維度在大綱中排序次序。這兩個屬性會決定資料庫的物理結構和計算順序,後面會討論到。
然後在樹型結構中,右擊維度成員顯示菜單,菜單中可以進行刪除、重新命名、新增成員、排序等操作。
滑鼠拖動某個成員可改變其在維度中的位置。
在維度模型結構中新增成員,建立如的維度結構。
G1. Account G2. 支出 G3. 日用品 G3. 交通 G3. 電器 G3. 教育 G3. 飲食 G3. 公用事業費 G4. 電單價 G4. 電用量 G4. 水單價 G4. 水用量 G3. 醫學 G2. 收入 G3. 工資 G3. 其他收入 G2. 現金流 G3. 期初現金 G3. 淨收入 G3. 調整 G3. 期末現金G1. Home G2. 張大明 G2. 王翠花 G2. 張小明G1. Scenario G2. 預算 G2. 實際 G2. 差異G1. Year G2. Q1 G3. 1月 G4. 1月1號 G4. 1月2號
在完成資料模型編輯後,點擊【驗證】,下方的訊息框內會顯示驗證資訊。若沒有出現任何錯誤或警告資訊,點擊【完成】結束應用程式編輯。
然後在應用程式庫中就可看到多出一個名為“HomeFinancial”的應用程式圖示。
至此,已經介紹了EPMA應用程式庫和維度庫的使用。EPMA是從EPM 9.3版開始引入的模組,它包括應用程式庫、維庫、資料同步、庫控製作業台等多個工具,以實現對EPM各產品應用程式進行集中式的管理。通過EPMA建立的應用程式稱為EPMA應用程式,而使用傳統方法建立的應用程式稱為標準應用程式。EPMA中提供了將標準應用程式轉換為EPMA應用程式的工具,在Workspace菜單中可找到,轉換的過程是無法復原的。EPMA應用程式的部署過程中用的的工具如。
載入中繼資料
現在,我們已經通過EPMA的應用程式庫建立了一個Essbase應用程式。不同於EAS Console直接在Essbase Server中建立標準應用程式,EPMA應用程式僅僅是儲存在EPMA中的中繼資料而已,它還沒有部署到Essbase Server中。下面會通過完善並部署此應用程式,來介紹EPMA的幾個重要工具。
回顧上一節建立的HomeFinancial資料模型,Time維度並沒有包含所有的日期項,一年365天都需要手工添加會是很大的工作量,我們需要通過關係型資料庫中批量的匯入維度成員。現實應用中從外部系統匯入維度和資料是常有的情況,例如從會計系統匯入會計科目。為此,EPMA提供了介面表,配合ETL工具可方便的將外部資料匯入。
介面表是由EPMA在關係型資料庫中自動建立的一組資料表,支援Oracle Database、Microsoft SQL Server、IBM DB2等主流資料庫。首先,串連到安裝EPM是用到的Oracle資料庫,執行下面語句建立一個新帳戶,用於儲存介面表。
CREATE USER EPMA_INTFC IDENTIFIED BY password;GRANT "RESOURCE" TO EPMA_INTFC;GRANT "CONNECT" TO EPMA_INTFC;GRANT UNLIMITED TABLESPACE TO EPMA_INTFC;
然後在Workspace菜單中選擇【導航】>【管理】>【配置介面資料來源】。開啟介面資料來源後,在菜單中選【檔案】>【建立】>【介面資料來源】,在介面資料來源建立對話方塊中,輸入介面表帳戶串連資訊。
在下一步中,給介面資料來源命名,並選中【Create Tables】,點擊【完成】。EPMA會在給定的資料庫帳戶中建立介面表。
串連到資料庫,會發現EPMA_INTFC賬戶下建立了若干的資料表。仔細觀察這些表的命名規則,以HS開頭的表分為4類,這些資料表都是需要寫入維度資訊,然後匯入到EPMA維庫裡;而以IM開頭的資料表是系統資料表。資料表的用途如下表,具體表結構和每個欄位的定義,參考EPMA文檔。
表名 |
用途 |
HS_Dimension_Member |
維度成員和成員屬性 |
HS_Dimension_Hierarchy |
維度父子階層 |
HS_Dimension_PropertyArray |
維度成員屬性 |
HS_Dimension_Property |
維度屬性 |
IM_Dimension |
登記介面表,自建的介面表需在此表中登記 |
IM_Load_Info |
通過Load ID可篩選匯入的資料批次 |
IM_Dimension_Association |
定義維度資料表間的關聯關係 |
介面表中,並非每個表和每個欄位都是必須,例如可用HS_
Dimension_Hierarchy和HS_
Dimension_PropertyArray取代HS_
Dimension_Member定義維度成員和屬性。而大部分使用預設值的屬性,對應欄位可為空白值。所以,在HomeFinancial應用中,要匯入Time維度成員,只需將成員寫入到HS_TIME_HIERARCHY表中即可。
在資料庫中執行以下SQL語句,將維度成員資料寫入到介面表HS_TIME_HIERARCHY中。
declare v_date date := to_date(‘130101‘,‘RRMMDD‘); v_order number := 0; v_month_str varchar(3 char); v_date_str varchar(6 char);begin delete from EPMA_INTFC.HS_TIME_HIERARCHY; for indx in 1..4 loop v_order := v_order + 1; insert into EPMA_INTFC.HS_TIME_HIERARCHY(parent,child,isprimary,sortorder) values(‘Year‘,‘Q‘ || to_char(indx),1,v_order); end loop; for indx in 1..12 loop v_order := v_order + 1; insert into EPMA_INTFC.HS_TIME_HIERARCHY(parent,child,isprimary,sortorder) values(‘Q‘ || to_char(ceil(indx / 3)),to_char(indx) || ‘月‘,1,v_order); end loop; for indx in 1..365 loop v_order := v_order + 1; v_month_str := ltrim(to_char(v_date,‘MM‘),‘0‘) || ‘月‘; v_date_str := v_month_str || ltrim(to_char(v_date,‘DD‘),‘0‘) || ‘日‘; insert into EPMA_INTFC.HS_TIME_HIERARCHY(parent,child,isprimary,sortorder) values(v_month_str, v_date_str, 1,v_order); v_date := v_date + 1; end loop; commit;end;
執行PL/SQL後,HS_TIME_HIERARCHY表裡應該有如下資料。
介面表資料準備好後,開啟EPMA維庫。開啟的方法有兩種,一種是在應用程式庫中雙擊應用程式圖示;另一種方法是通過Workspace菜單【導航】>【管理】>【維庫】,然後在菜單【檔案】>【編輯應用程式】中選擇應用程式。維庫從左至右分成三欄,最左邊是共用維度庫,中間是應用程式維度結構,右邊是所選成員的屬性。
維庫介面類似於在應用程式建立嚮導中維度編輯介面,唯一不同的是多出了共用維度庫。共用維度顧名思義是可以由多個應用程式共用使用的,企業中一些常用維度,如組織架構、會計科目等會被多個應用程式使用,使用共用維首先避免了重複建立維度工作量,其次避免應用程式間出現的資料不一致問題。這一概念與主要資料管理系統相似,事實上Hyperion在2005年通過收購Razza獲得了一套主要資料管理系統Hyperion Data Relationship Management(簡稱DRM),現在已成為Oracle主要資料管理解決方案的一部分。EPMA也支援從DRM匯入維度。
與共用為對應的是本地維,本地維是只屬於某個應用程式的維度。應用程式的本地維可以複製到共用維度庫,也可以將共用維複製到應用程式。共用維度庫是EPMA應用程式相對標準應用程式的主要優勢之一。
在維庫中,點擊Workspace菜單【檔案】>【匯入】>【建立設定檔】,選擇由本地介面庫匯入到HomeFinancial應用程式,並給設定檔命名。從匯入類型選項可知,除了介面表外,還支援從一般檔案和DRM匯入。EPMA還提供了產生一般檔案的案頭用戶端工具File Generator,安裝EPM後可以在開始菜單中找到。
在維度映射配置中,選擇只匯入Time維度,處理類型選擇【合并為主要成員】,重新排列類型選擇【合并至底層】,選上重新排列現有成員選擇框。
將匯入設定檔儲存後,在菜單中選【檔案】>【匯入】>【匯入維】,選中剛建立的匯入設定檔。此處,若在IM_Load_Info介面表中定義了Load ID,可選擇若干介面載入ID,以篩選匯入的維度成員,不選擇Load ID則匯入介面表中所有的成員。
點擊【匯入】按鍵後,EPMA會建立作業在後台執行匯入工作,介面上會顯示對話方塊提示作業已提交。
對話方塊上給出了作業連結,點擊可開啟作業控制台顯示作業執行狀態。作業控制台是EPMA的工具之一,使用它可查看EPMA各種作業的記錄。作業控制台可通過Workspace菜單【導航】>【管理】>【作業控制台】開啟。
作業執行成功後,在維庫中重新整理應用程式結構,查看Time維度成員是否正確匯入。順便說一句,除了通過EPMA介面表,Oracle Data Integrator、Essbase Studio、Essbase SQL Interface都可以直接向Essbase載入資料。
部署應用程式
在部署HomeFinancial應用程式前,開啟Essbase Administration Services Console(EAS Console),確認Essbase Sever是否開啟對Unicode的支援。EAS Console可通過連結http://<epm_server>:9000/easconsole開啟,或從下載的EPM用戶端壓縮包中安裝。開啟EAS Console首先顯示登陸資訊,輸入EAS地址和帳號後登陸。
登陸後在左側的企業視圖中,右擊【Essbase伺服器】,在菜單中選【添加Essbase伺服器】。在對話方塊中,添加EAS本地Essbase Server加入。
在企業視圖中,展開添加的Essbase Server節點,可以看到其中已有幾個安裝時內建的範例應用程式。每個應用程式下都含有一個或多個多維資料庫,資料庫下是大綱、規則檔案、分區、報表指令碼等。在EAS Console中可以進行應用程式管理、大綱編輯、維度和資料匯入、計算指令碼編寫等操作,可以說EAS Console是功能最全、最經典的Essbase管理和開發工具。使用EPMA建立的資料庫部署到Essbase Server後,也可以用EAS Console編輯。但EAS Console是直接修改Essbase Server中的資料庫,所有的修改都不會同步到EPMA中,所以EAS Console適用於編輯標準應用程式,最好不要修改EPMA應用程式。
滑鼠右鍵點擊Essbase Server,菜單中選擇【編輯】>【屬性】,在安全性屬性裡,確保【建立Unicode模式的應用程式所需的許可權】被選中,然後點擊【應用】。
回到EPMA中,開啟應用程式庫。右擊HomeFinancial應用程式圖示,菜單中選【驗證】,然後在作業控制台中查看驗證作業執行狀態。若驗證無問題,右擊應用程式選擇【部署】。部署過程同樣可通過作業控制台監控。
部署結束後,在EAS Console中可看到HomeFinancial已加入到Essbase Server中。
Oracle Essbase入門系列(二)