第八篇.HFM規則入門(二)

oracle_cj發表於2021-07-19

今天這篇文章主要是引用官方文件的內容並加以解釋,筆者認為有關exp函式使用的資料,官方文件上的例子是非常經典的,值得讀者細品。

1、Exp函式介紹


Exp函式是HFM的頂級物件,即只能是HS.exp的用法,並且只能在計算規則(Calculate),折算規則(Translate),分攤規則(Allocate)中使用。

不能在合併規則(Consolidate)中使用,讀者可以想一想為什麼?

Hs.exp中的維度組合一般只用Account,ICP,C1-CN(N代表自定義維度的個數)。

語法:hs.exp “目標維度組合=源維度組合或者數值”,並且每個維度之間是英文的.分割,每個維度使用短名稱和#連線。

維度短名稱列表(8個固定維度的短名稱取的就是每個維度的首字母):

維度編碼

維度短名稱(規則中用)

說明

Account

A

科目維度

Entity

E

組織維度

Year

Y

年維度

Period

P

期間維度

View

W

檢視維度,由於View和Value維度首字母都是V,為了區分使用W

Value

V

值維度

ICP

I

往來單位

Scenario

S

情景維度

Custom1-CustomN

C1-Cn

2.1 版本以後,自定義維度支援給自定維度重新命名,並且可以大於4個自定維度,比如Custom 1 設定為Report,更加直觀


2、Exp函式示例

先看下以下示例,

將科目庫存現金:100101與自定義維的 [None] 成員交叉的單元格設定為100:

HS.Exp "A#100101.C1#[None].C2#[None].C3#[None].C4#[None]=100"

規則中一般只用Account,ICP, C1-Cn,不用其他維度,為什麼?

因為其他維度預設就是“當前成員”,什麼意思,上面這個語句也可以將1 2 個維度(假設是4個自定義維度)組合全部寫出來,怎麼寫?

HS.Exp "E#"&hs.entity.member&".Y#"&hs.Year.member&"….A#100101.C1#[None].C2#[None].C3#[None].C4#[None]=100"

這樣寫可以,但是,是不是很複雜,可讀性也不好,初學時如果對“當前成員”不理解,可以這樣記住:能和H S 直接使用的維度就是當前成員,有如下維度:

我們再回過頭去看上面的語句:

HS.Exp "A#100101.C1#[None].C2#[None].C3#[None].C4#[None]=100"

上面的維度組合我漏了I CP 維度,可以嗎?

a. 一般庫存現金科目是非I CP 科目,既不掛I CP ,也就是預設在[ ICP None]

科目維度I CP 屬性欄位:isICP =”N”

b. 如果isICP =”Y”,即:

HS.Exp "A#100101.C1#[None].C2#[None].C3#[None].C4#[None]=100"

如果還這樣寫,有問題嗎?

顯然有問題,這個語句會將所有I CP 維度都填充,當表單選擇 ICP 維度成員[ ICP TOP] 時,資料會翻 N 倍。

正確的寫法應該是:

HS.Exp "A#100101. I#[ICP None]. C1#[None].C2#[None].C3#[None].C4#[None]=100"


透過這個簡單的例子,說明非常重要的幾點:

1) 寫規則時必須要關注維度模板中每個維度的屬性配置,特別是科目維度。

2) 儘可能將公式中的維度組合寫全(主要是account,icp,C 1-Cn,其他維度一般不需要寫在公式中),可避免垃圾資料和不正確的資料產生。

3) 讀者一定要敢於懷疑,並且敢於去嘗試不同寫法的資料結果。


今天就先寫這麼多,下篇我們將真正走進exp函式的複雜場景使用。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28963606/viewspace-2782072/,如需轉載,請註明出處,否則將追究法律責任。

相關文章