本篇開始會一個三口之家的家庭財務數據庫為例,講述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 | 定義維度表間的關聯關系 |
在數據庫中執行以下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中。