@LEVMBRS
,而非 @RELATIVE
。@CHILDREN
,而非 @RELATIVE
(適用時)。@REMOVE
和 @LEVMBRS
。使用 Planning 中所儲存的日期來執行計算
Planning 可讓您輸入日期值。例如,使用 MM/DD/YYYY 格式,開始日期可能輸入為 11/01/2019,而結束日期可能輸入為 06/01/2020。Oracle Essbase 會將日期格式值儲存為數值。例如,先前的開始日期儲存為 20191101,而結束日期儲存為 201200601。您可以使用 Essbase 函數 (例如,@ROUND
、@INT
或 @TRUNCATE
函數) 來計算任何開始日期與結束日期之間的月份數。下列範例顯示如何使用 @ROUND
函數來計算開始日期與結束日期之間的月份數:
(@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12此計算
(20200000 – 20190000)/10000 *12
的結果為 12。(@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100計算
(20200600 – 20200000)/100
的結果為 6。(@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100計算
(20191100 – 20190000)/100
的結果為 11。(12+6-11)
,以計算開始日期與結束日期之間的月份數 (7)。
(((@ROUND ("End Date",-4) - @ROUND ("Start Date",-4))/10000*12) + ((@ROUND ("End Date",-2) - @ROUND ("End Date",-4))/100)- ((@ROUND ("Start Date",-2) - @ROUND ("Start Date",-4))/100))
使用 @CURRMBR 函數
@CURRMBR
函數可傳回目前所計算維度成員的名稱,特別適用於限定和管理複雜計算。不過,您必須考慮其效能影響。
在稀疏維度上使用 @CURRMBR
函數時,不會影響效能,因為區塊只會對應至一個稀疏維度成員。不過,用於密集維度時,此函數的效能會變慢,因為它會在區塊層級執行計算,而非儲存格層級。因此,此函數會計算所有密集維度成員,即使查詢中沒有特定密集維度成員也是一樣。因此,請謹慎地搭配使用此函數與密集維度。
此外,用於密集維度時,如果搭配使用 @CURRMBR
函數與 @CONCATENATE
這類其他函數,則可能會產生非預期的結果或錯誤。例如,如果查詢中的動態計算成員包含公式 "Actual"->@MEMBER(@CONCATENATE(@NAME (@CURRMBR ("Account")),"_Total"))
,而且 Account 維度為稀疏,則只要查詢中的科目產生有效的大綱成員,就會執行查詢,而不發生錯誤。不過,如果 Account 維度為密集,則查詢會導致下列錯誤,即使查詢中的科目產生有效的大綱成員也是一樣。
Error executing formula for [member name] (line 0): attempt to cross a null @ member in function [@X]
會產生此錯誤,因為 @CURRMBR
函數在區塊層級進行計算,因此會計算密集區塊中的所有科目。並非區塊內的所有科目都會產生有效的大綱成員,進而導致先前的錯誤訊息。如需有關 @CURRMBR
函數的詳細資訊,請參閱 Oracle Essbase Technical Reference (僅英文版) 中的 @CURRMBR。