除了大綱計算,維度成員的另外一項重要屬性是存儲類型,存儲類型決定維度成員相關單元格的物理存儲方式。在維庫中編輯成員的【Data Storage】屬性,下拉菜單中可選的5種,再加上Shared成員,一共6種存儲類型。數據庫
Store:儲存數據。當一個單元格全部成員的存儲類型都是Store時,單元格的數據會物理存儲。前面說明輸入單元格和計算單元格時,彷佛存在這樣的印象——非0級和帶有成員公式的單元格都是不可輸入的,必須由子代成員合併或公式計算獲得。其實否則,決定單元格是否「可輸入」是由存儲類型決定的。Store類型的單元格均可輸入數據,只不過在執行了計算後被輸入數據會被計算結果覆蓋。函數
DynamicCalc:動態計算。相關單元格不存儲數據,僅在查詢時即時計算。動態計算的成員必須定義計算方法,非0級成員能夠經過子代成員合併,0級成員必須有成員公式。使用動態計算的目的,一是能夠減小存儲空間,二是能夠阻止在單元格上輸入數據。但若是查詢中包含有動態計算成員時,會延長查詢響應時間。性能
DynamicCalcAndStore:動態查詢和存儲。當第一次查詢或數據被標識爲髒時,即時計算,計算結果會保存下來,後續查詢中就可使用存儲的數據。相比起DynamicCalc,DynamicCalcAndStore平衡了查詢性能和存儲空間。設計
LabelOnly:僅標籤。既不計算,也不存儲數據。僅在層次中做爲分組或分級的標籤存在。查詢LabelOnly成員時,一般顯示第一個子成員的數據。blog
Shared:共享成員。共享成員是對同維度中同名成員的引用,其數據來自於被引用成員。若是在維度中多個地方使用同一成員,可使用共享成員。例如,Account維度中收入和支出在淨收入的成員公式中被引用,可使用共享成員來實現一樣的計算。如圖設計大綱,淨收入下的共享成員引用了同維度中的支出與收入,按照合併計算符,能夠代替成員公式的計算方法。在維庫中要加入共享成員,可右擊某一成員,在右鍵菜單中選【插入共享成員】>【做爲子代】或【做爲同級】。ci
NeverShare:不共享數據。除了使用Shared類型來顯示的定義共享成員外,Essbase中還有些成員是隱式共享。參考圖3-48的維度結構,Home成員值實際上等於張大明成員值。Essbase能識別這種關係,並自動將張大明做爲Home的共享成員,此稱爲隱式共享。爲了不隱式共享,能夠將Home的存儲類型置爲NeverShare。部署
例:張大明家須要制定2013年的家庭預算,在Year維度上,只需作月度收支計劃,無需細化到每一日;Home維度上,全家的預算分配到我的時,保留一部分機動資金。還須要按期覈對預計收支目標和實際收支間的差別,實際支出應該小於目標支出,實際收入應該大於目標收入。如表是1月的預算與實際收支數據。io
此例要求數據庫可在Year、Home、Account維度的非0級成員上輸入數據,因此首先確保表中相關維度成員的存儲類型必須是Store。class
因爲機動資金,Home成員的支出是要大於子成員支出的總和。並且,要求在Year維度中,就算在日級成員中誤輸入了數據,也不會影響到月級成員的數據。因此在計算時,非0級成員的輸入數據不能被子代成員的合併計算結果覆蓋。爲此將Scenario維度下預算的合併計算符設爲「^」,則預算相關的全部單元格都不使用合併計算符計算。引用
但同時又但願在Time維度上將月度預算能彙總到季度,再彙總到整年。編輯數據庫的默認計算腳本,以下:
接着來看錶中差別項的定義,差別是實際和預算的差值,但支出和收入有不一樣的計算方向。對支出來講,實際小於預算爲優,差別等於預算減實際;對收入來講,實際大於預算爲優,差別等於實際減預算。這種計算方式可以使用費用報告計算(Expense Reporting)功能,費用報告是除了時間平衡外,Account類型維度另外一個特有的計算屬性。經過將Account維度的成員標註爲費用或非費用類型,可控制在@VAR和@VARPER函數中的計算方向。
在維庫中將支出及其子成員的【Expense Reporting】屬性設置爲Expense;收入及其子成員爲默認的NonExpense。修改差別的存儲類型設爲DynamicCalc,成員公式設爲:
至此,HomeFinancial數據庫已基本知足了例子中提出的需求。將這兩節中的修改彙總,數據庫模型最終的結構以下:
維度結構:
成員公式:
默認計算腳本:
在維庫中檢查HomeFinancial應用程序是否都如上修改,如無問題部署到Essbase Server。EPMA目前還沒法編輯Essbase計算腳本,所以部署後再修改默認計算腳本。