自訂動因公式範例會採用以下數值:
階段 1 維度:GL_ Department x GL_Account
階段 2 維度:ACT_Department x ACT_Activity
在 Oracle Hyperion Profitability and Cost Management 的計算指令碼層代程序中會插入定義的指令碼,此指令碼是針對任何使用此動因的來源的自訂動因所定義。系統產生的指令碼會建立 FIX 陳述式,並依據附加至來源的指派邏輯所定義的組合,指出來源及目標。
自訂動因指令碼不需要提供此 FIX,但可利用或修改 FIX,以從不同的位置 (即非針對 Destination、Source、Assignment 或 Global 測量位置所定義的位置) 參照資料。
自訂動因的常用用途取決於資料儲存位置的參照能力 (不包含上述四個標準位置),允許使用者輸入更高階層層級或更少交集的動因測量。
經過 CalculatedDriverValue 測量計算的預設 FIX 陳述式,會反映來源及目標之間的連結。透過範例階段,系統產生的指令碼所建立的 FIX 將顯示如下:
GL_Department.member x GL_Account.member x ACT_Department.member x ACT_Activity.member
在此 FIX 中,每個維度的維度成員皆會反映執行中的配置的來源交集與目標交集。
下列範例將會修改這個預設的 FIX,以從其他位置擷取動因測量。請記住,若預設 FIX 參照的成員與您所要的目的相符,則不必覆寫該成員。
範例 1:在其他維度中 (此案例為 ACT_Department),參照位於唯一目標交叉維度 NoMember 中的動因測量
"CalculatedDriverValue" = "DriverMeasure" ->"[ACT_Activity.NoMember] ->"[ GL_Department.NoMember] ->"[ GL_Account.NoMember];
此公式適用於整個部門有單一的動因值時 (如平方英尺、公尺或人數)。
範例 2:在其他維度中,參照位於任一目標交叉維度 NoMember 中之父項的動因測量:
"CalculatedDriverValue" = "DriverMeasure" ->"[ACT_Activity.NoMember]"->"(@PARENT(ACT_Department)" ->"[ GL_Department.NoMember] ->"[ GL_Account.NoMember];
您也可以參照祖代的層代,並使用 @ANCSET
函數擷取其數值。在此範例中,動因會從目標部門成員的層代 2 祖代中提取 DriverMeasure 值:
"CalculatedDriverValue" = "DriverMeasure" ->"[ACT_Activity.NoMember]"->"(@ANCEST(ACT_Department, 2)" ->"[ GL_Department.NoMember] ->"[ GL_Account.NoMember];
其他的常用用途是針對來源及目標組合的性質鍵入動因值計算。此選項允許依據配置中包含的交集特性來調整動因,以應付特定的狀況。
範例 3:根據任一個目標成員的使用者定義屬性 (UDA),參照不同的動因計算測量:
IF(@ISUDA(Activity,"UDA1"))
"CalculatedDriverValue" = {Measure1->Destination};
ELSE IF (@ISUDA(Activity,"UDA2"))
"CalculatedDriverValue" = {Measure2->Destination};
ELSE IF (@ISUDA(Activity,"UDA3"))
"CalculatedDriverValue" = {Measure3->Destination};
ENDIF;
使用此公式,可以依據目標的某一特性 (如產品尺寸或客戶分類) 鍵入動因公式。請注意,範例中的 ‘{Measure1->Destination}’
語法與一般的 Oracle Essbase 計算指令碼語法不同。大括弧 ({ }) 的使用能讓 Profitability and Cost Management 轉譯簡短的‘->Destination’,並取代為欲選取的實際目標。當您將指令碼部署至 Essbase 時,Profitability 應用程式會插入正確的成員參照及語法。