Essbase 계산 스크립트는 Financial Consolidation and Close에서 고유한 사용자정의 비즈니스 논리를 작성하는 데 사용할 수 있는 언어입니다. 이 섹션에는 일부 기본적인 Essbase 구문과 Financial Consolidation and Close에 적용되는 제한 사항이 제공되어 있습니다. Essbase 계산 스크립트에 대한 자세한 내용은 관리자용 Essbase Cloud 시작하기를 참조하십시오.
공통 구문
Sales = Sales * 1.50;
"Cash Ratio" = "Cash"/"Current Liabilities";
->
를 사용하여 둘 이상의 차원에 대한 교차점을 지정합니다."Sales"->"Changes In Net Income"->"Product1";
주석
설명은 /*
로 시작하고 */
로 끝납니다.
단일 또는 여러 라인 주석이 지원됩니다.
툴바 아이콘을 사용하여 주석 블록을 설정하거나 제거할 수 있습니다.
FIX/ENDFIX
FIX/ENDFIX는 계산 스크립트의 기본 구성 요소 중 하나입니다. 계산을 수행하려면 FIX/ENDFIX 섹션을 정의한 다음 해당 섹션 내에 실제 비즈니스 계산을 배치해야 합니다.
예: "제품"이 사용자정의 차원이며 판매된 텔레비전 수를 계산한다고 가정해 보겠습니다. 다음 구문을 사용할 수 있습니다.
FIX("Televisions")
"Units_Sold" = "LED_TVs" + "UHD_TVs";
ENDFIX
실제 비즈니스 계산은 다음과 같습니다.
"Units_Sold = "LED_TVs" + "UHD_TVs";
에서 판매된 텔레비전 수를 계산합니다.
주:
FIX 또는 ENDFIX를 제외하고는 계산 명령문마다 끝에 세미콜론을 사용해야 합니다.FIX/ENDFIX 섹션은 섹션 내에서 계산에 참여하는 다양한 차원의 멤버를 제한합니다. 이 예에서는 "텔레비전"만 계산에 참여합니다.
다음과 같이 중첩된 FIX도 정의할 수 있습니다.
위 계산을 아래와 같이 작성할 수도 있습니다.
예를 들어 @List는 Essbase 함수입니다. Essbase는 여러 함수를 제공합니다. 하지만 Financial Consolidation and Close는 Essbase 함수를 일부만 지원합니다. 지원되는 함수 목록은 "Essbase 함수 목록" 섹션을 참조하십시오.
Financial Consolidation and Close 차원의 FIX
Financial Consolidation and Close 애플리케이션에는 사용으로 설정된 애플리케이션 기능에 따라 13개의 차원이 포함될 수 있습니다. 가능한 13개 차원 중 다음 차원에서는 FIX를 적용할 수 없습니다. 사용자가 연결 프로세스를 호출할 때 시스템에서 자동으로 해당 차원에서 FIX를 적용하기 때문입니다.
시나리오
연도
기간
뷰
엔티티
예를 들어 다음 명령문이 있다고 가정해 보겠습니다.
시스템에서 배포에 실패하고 오류 메시지가 작업 콘솔에서 적절한 정보를 사용하여 로깅됩니다.
그러나 이것이 스크립트에서 해당 차원을 사용할 수 없음을 나타내는 것은 아닙니다. 일반적으로 계산에는 아래와 유사한 구문이 있습니다.
FIX 및 "왼쪽"에서는 시나리오, 연도, 기간, 엔티티 및 뷰 차원의 멤버를 사용할 수 없습니다. 그러나 수식의 "오른쪽"에는 이러한 제한이 없습니다.
허용되는 구문은 다음과 같습니다.
나머지 8개 차원의 경우 특정 차원에 FIX를 적용하지 않으면 시스템에서 해당 차원의 모든 멤버를 가정합니다. 예를 들어 다음 명령문이 있다고 가정해 보겠습니다.
이 예에서는 계정을 제외한 나머지 모든 차원에 FIX가 있습니다. 이 경우 Essbase는 계정 차원의 모든 멤버를 FIX/ENDFIX 내 계산에 대해 고려합니다.
제한된 Financial Consolidation and Close 멤버
각 Financial Consolidation and Close 내의 특정 시스템 멤버는 계산 스크립트에서 사용 또는 계산이 제한됩니다. 계산에서 제한된 멤버가 사용되는 경우 시스템에서 검증 또는 배포에 실패하고 오류 메시지가 작업 콘솔에서 로깅됩니다.
차원에 대해 지정된 멤버가 없는 경우 시스템은 해당 차원 내의 모든 멤버를 가정합니다. 그러나 제한된 멤버는 프로세스의 일부로 포함될 수 없으므로 FIX 차원 명령문 또는 표현식의 왼쪽에서 이러한 제한된 멤버를 명시적으로 제외해야 합니다.
다음 테이블에는 이러한 차원의 제한된 Financial Consolidation and Close 멤버에 대한 전체 목록이 있습니다. 통화 및 연결 차원의 경우 사용되는 삽입 규칙에 따라 멤버가 제한됩니다. 각각의 초기 설정 삽입 규칙 설명 섹션에 해당 규칙에서 포함할 수 있는 통화 및 연결 차원 멤버에 대한 정보가 있습니다.
표 20-5 제한된 차원 멤버
차원 | 멤버 | 표현식 왼쪽 | 표현식 오른쪽 |
---|---|---|---|
시나리오 | 모든 멤버 | 아니요 | 예 |
연도 | 모든 멤버 | 아니요 | 예 |
기간 | 모든 멤버 | 아니요 | 예 |
뷰 | 모든 멤버 | 아니요 | 예 |
엔티티 | 모든 멤버 | 아니요 | 예 |
계정 | FCCS_CSTATUS | 아니요 | 예 |
FCCS_CSTATUS FILTER | 아니요 | 예 | |
FX 환율 - 종료 | 아니요 | 예 | |
FX 환율 - 평균 | 아니요 | 예 | |
평균 환율 | 아니요 | 예 | |
종료 환율 | 아니요 | 예 | |
SrcAverageRate | 아니요 | 예 | |
TgtAverageRate | 아니요 | 예 | |
SrcEndingRate | 아니요 | 예 | |
TgtEndingRate | 아니요 | 예 | |
FCCS_Balance | 아니요 | 예 | |
FCCS_CTA | 아니요 | 예 | |
FCCS_CICTA | 아니요 | 예 | |
FCCS_Percent Control | 아니요 | 예 | |
FCCS_Current Ratio | 아니요 | 예 | |
FCCS_Quick Ratio | 아니요 | 예 | |
FCCS_Cash Ratio | 아니요 | 예 | |
FCCS_Inventory Turnover | 아니요 | 예 | |
FCCS_Asset Turnover | 아니요 | 예 | |
FCCS_Days Sales In Receivables | 아니요 | 예 | |
FCCS_Days Sales In Inventory | 아니요 | 예 | |
FCCS_Gross Profit Margin | 아니요 | 예 | |
FCCS_Return on Sales | 아니요 | 예 | |
FCCS_Return on Equity | 아니요 | 예 | |
FCCS_Debt to Equity Ratio | 아니요 | 예 | |
FCCS_Debt Ratio | 아니요 | 예 | |
데이터 소스 | FCCS_System Types | 아니요 | 예 |
FCCS_Rate 대체 | 아니요 | 예 | |
FCCS_Account Override | 아니요 | 예 | |
FCCS_PCON | 아니요 | 예 | |
FCCS_Driver Source | 아니요 | 예 | |
이동 | FCCS_Opening Balance | 아니요 | 예 |
FCCS_OpeningBalance_Cash | 아니요 | 예 | |
FCCS_FX_Total_NonCash | 아니요 | 예 | |
FCCS_ClosingBalanceCash | 아니요 | 예 |
제한된 멤버를 제외한 차원의 모든 멤버에 FIX 적용
차원의 모든 레벨 0 멤버에 FIX를 적용해야 하나 해당 차원에 제한된 멤버가 있는 경우가 많습니다. 이 예에서는 차원의 제한된 멤버를 제외한 모든 레벨 0 멤버에 최적의 방식으로 FIX를 적용하는 방법을 보여줍니다.
예를 들어 계정 차원은 제한된 멤버 수가 가장 많습니다.
다음은 제한된 멤버를 제외한 모든 레벨 0 계정 멤버에 FIX를 적용하는 데 사용할 수 있는 계산 스크립트 코드 조각입니다.
@REMOVE( @LEVMBRS( "Account", 0 ), @LIST( @RELATIVE( "FCCS_System Account", 0 ),@RELATIVE( "FCCS_Drivers", 0 ),@RELATIVE( "FCCS_Ratios", 0 ),@RELATIVE( "Exchange Rates", 0 ) ) )
희소 및 밀집 차원에 FIX 적용
FIX는 희소 차원에서 사용되는 경우 더욱 효과적입니다. 이 경우 FIX는 Essbase가 FIX에 정의되고 나머지를 건너뛴 희소 차원 멤버의 조합에 대해서만 블록을 추출하도록 할 수 있습니다.
이러한 희소 조합은 Essbase에서 인덱스와 일치하고 계산을 위해 추출하는 데이터 블록을 검색할 인덱스로 사용됩니다. 따라서 수행할 시스템에 대해 일부 블록만 추출됩니다.
FIX가 밀집 차원에서 사용되는 경우 Essbase의 각 데이터 블록에 밀집 멤버가 있습니다. 따라서 제대로 사용되지 않는 경우 성능에 영향을 줍니다. FIX가 밀집 차원에 있는 경우 Essbase는 블록 수에 제한 없이 모든 데이터 블록을 추출하고 각 블록 내 부분에만 제한을 둡니다. 따라서 정보를 반환하는 데 데이터베이스에 대해 여러 단계가 필요할 수 있습니다.
예를 들어 다음 명령문을 사용하여 계정 차원의 "Sales" 및 "PostSales"를 참조할 수 있습니다.
시스템이 "Sales"에서 첫번째 fix를 처리하면 Essbase가 계정 차원의 모든 데이터 블록을 추출하지만 하나의 "Sales" 계정에서만 작업합니다.
나중에 "PostSales"의 FIX 명령문에서 Essbase가 다시 계정 차원의 모든 데이터 블록을 추출하지만 하나의 "PostSales" 계정에서만 작업합니다. 이 경우 이러한 두 계정의 데이터베이스에 대해 2단계가 수행됩니다.
성능 이슈를 방지하기 위해 계정 차원에서 FIX 사용을 방지하고 밀집 차원에 대해 IF...THEN을 사용할 수 있습니다.
FIX 명령문을 사용하지 않는 이 예에서는 Essbase 데이터베이스에 대해 1단계만 수행하면 됩니다.
계산 성능에 도움이 되려면 희소 차원에서는 FIX를 사용하고 밀집 차원에서는 IF..THEN을 사용하는 것이 좋습니다.
멤버 블록
멤버 블록은 계산 블록으로도 알려져 있습니다. 멤버 블록에 "앵커"라는 용어가 사용되는 경우가 있습니다. 멤버 블록의 구문은 다음과 같습니다.
멤버 블록 명령문의 예는 다음과 같습니다.
이 예에서 "내 총 기초 잔액"은 계산 블록 멤버 또는 앵커로도 알려져 있습니다. 가능하면 이 멤버는 밀집 차원의 멤버여야 합니다.
위 계산에서는 "내 FX 기초" 멤버만 제한하고 FIX 명령문에 지정된 멤버에서 계산을 수행합니다.
IF 명령문을 사용하는 경우 멤버 블록이 필요합니다. 멤버 블록 외부에서는 IF 명령문을 작성할 수 없습니다.