집계 저장 영역 큐브에 대한 사용자정의 계산
사용자정의 계산은 ASO(집계 저장영역) 큐브에서 반복 계산을 실행할 수 있도록 하여 Essbase의 분석 기능을 확장합니다. 계산할 특정 큐브 영역을 대상으로 지정하여 회계에 대한 차변, 대변 및 차감 정보를 제공할 수 있습니다.
대상 레벨 0 셀을 업데이트하는 집계 스토리지 큐브에 대한 사용자정의 계산을 작성할 수 있습니다. 사용자정의 계산 스크립트는 MDX로 표현됩니다.
사용자정의 계산을 사용하여 GL의 계정 잔액에 대한 기본 수학을 수행하고 결과를 Essbase 합산 저장영역 큐브의 목표 레벨 0 멤버에 기록할 수 있습니다. 계정 잔액 또는 고정 금액에 대해 계산을 수행할 수 있으며 모든 회계 기간을 반복하도록 스케줄링할 수 있습니다.
사용자정의 계산은 이중 입력 회계가 적용되는 GL 보고에 큐브를 사용할 때 유용할 수 있습니다. 자산 및 비용과 같은 차변 항목은 자본 및 수익과 같은 대변 항목과 균형을 이루어야 합니다.
다음 워크플로우를 사용하여 사용자정의 계산을 생성하고 실행합니다.
-
MDX로 표시된 계산 스크립트를 생성합니다.
-
계산이 실행될 큐브 영역을 선택합니다. 대상 및 POV(Point of View) 매개변수를 사용하여 실행 시 영역을 제공합니다.
-
차변 및 대변 처리를 사용하는 경우 아웃라인에서 차변 및 대변 멤버를 선택하여 양수 및 음수 값을 작성합니다. 실행 시 이러한 파라미터를 제공합니다.
-
간격띄우기 항목을 사용하는 경우 간격띄우기 항목을 작성해야 하는 영역을 선택합니다. MDX 튜플을 사용하여 실행 시 이 매개변수를 제공합니다. 오프셋이 지정되지 않았거나 비어 있으면 오프셋 계산이 수행되지 않습니다.
주:
GL 부기에서는 상계 입력이 원장의 반대쪽에 있는 상계 측정입니다. 예를 들어 1월의 $100 대변에는 원장의 차변에 $100 상계가 추가될 수 있으므로 해당 금액의 예정된 비용에 대비하여 원장을 잔액조정할 수 있습니다.
-
사용자정의 계산 스크립트를 실행합니다.
사용자정의 계산 기준 목록
Essbase 합산 저장영역(ASO) 큐브에 대한 사용자정의 계산을 설계할 때 고려할 기준은 POV(컨텍스트 영역), MDX 계산 스크립트, 대상(결과가 작성되는 위치), 소스 영역(공식으로 참조), 선택적 오프셋 값, 선택적 대변 및 차변 멤버입니다.
사용자정의 계산 기능은 지정된 다양한 기준에 따라 달라집니다. 계속하기 전에 이 약관을 검토하십시오.
표 38-1 사용자 정의 계산 기준 설명
| 기준 | 설명 |
|---|---|
|
POV |
사용자정의 계산이 수행되는 컨텍스트를 설명하는 데이터베이스의 대칭 영역입니다. 속성 멤버는 이 인수에 사용할 수 없습니다. |
|
계산스크립트 |
MDX로 표현된 계산 스크립트입니다. 속성 멤버는 방정식의 왼쪽에 사용할 수 없습니다. |
|
Target |
계산 결과가 기록되는 큐브의 영역을 정의하는 MDX로 표현된 튜플 인수입니다. 이 인수는 각 공식 및 오프셋의 왼쪽과 결합되어 결과 및 오프셋 값이 기록되는 위치를 결정합니다. 속성 멤버는 이 인수에 사용할 수 없습니다. |
|
(선택 사항) 오프셋 |
각 소스 금액에 대한 오프셋 값이 기록되는 데이터베이스의 위치입니다. 속성 멤버는 이 인수에 사용할 수 없습니다. |
|
(선택 사항) 대변 및 차변 멤버 |
이중 입력 회계에서 한 거래에 대한 분개 입력의 잔액조정입니다. 둘 다 MDX 멤버 표현식입니다. 차변 멤버는 양수 결과 값이 작성되는 멤버를 나타내고 대변 멤버는 음수 결과 값이 작성되는 멤버를 나타냅니다. 속성 멤버는 이 인수에 사용할 수 없습니다. |
|
소스 리전 |
스크립트의 공식에 의해 참조되는 큐브 영역을 지정하는 MDX 세트 표현식입니다. |
ASO 사용자 정의 계산 작성 및 실행
Essbase 합산 저장영역 큐브에 대한 사용자정의 계산을 작성하고 실행하여 대상 레벨 0 셀을 업데이트합니다. 사용자정의 계산 스크립트는 MDX로 표현됩니다. 스크립트를 실행하려면 MaxL 계산 실행을 사용합니다.
사용자정의 계산 작성
사용자정의 계산 스크립트는 .csc 확장자를 사용하여 생성하고 저장하는 파일입니다. MDX에서 세미콜론으로 종료되는 튜플-표현식 쌍 하나 또는 일련의 사용자정의 계산 스크립트를 생성합니다. 구문은 다음과 같습니다.
tuple := numeric_value_expression;튜플은 멤버가 하나 이상인 MDX 지정이며, 각 멤버의 차원이 서로 다릅니다. 튜플은 방정식의 왼쪽에 있어야 하며 사용자정의 계산 결과가 기록되는 위치를 결정하는 기본 요소입니다.
멤버 이름만 튜플 표현식에 허용됩니다. 사용자정의 계산 스크립트에 대해서는 MDX 함수 사용이 지원되지 않습니다.
주:
결과의 대상을 결정하는 보조 요소는 target 매개변수이고 세번째 요소는 POV 매개변수입니다. 계산 스크립트의 일부가 아닌 계산 실행 시 두번째 및 세번째 매개변수를 지정합니다.
numeric_value_expression은 숫자 또는 산술 연산 등의 간단한 MDX 숫자 값 표현식입니다. 표현식은 방정식의 오른쪽에 있어야 합니다. 산술 연산자만 허용됩니다. 비산술 연산자(예: AND, OR 또는 IF 문)를 사용하는 경우 오류가 반환됩니다.
멤버 이름은 숫자 값 표현식에서 사용할 수 있지만 사용자정의 계산 스크립트에 대해서는 멤버 함수 사용이 지원되지 않습니다.
속성 멤버는 사용자정의 계산 스크립트의 방정식 왼쪽에 사용할 수 없습니다.
또한 Essbase에 대한 성능 힌트 역할을 하는 소스 영역을 정의해야 합니다. Essbase는 소스 영역에 지정된 데이터를 사전 인출하고 이를 사용하여 스크립트에 지정된 계산을 수행합니다.
사용자정의 계산 실행
MaxL 계산 실행(집계 스토리지) 문을 사용하여 사용자정의 계산을 실행할 수 있습니다.
Java API 메소드 IEssPerformCustomCalc.performCustomCalc 또는 C API 함수 EssPerformCustomCalcASO를 호출하여 API를 사용하여 사용자정의 계산 스크립트를 실행할 수도 있습니다.
Oracle Hyperion Calculation Manager를 사용하여 사용자정의 계산을 설계하고 Enterprise Scheduling Services에 실행할 수 있도록 배포할 수도 있습니다.
사용자정의 계산의 샘플 사용 사례
Essbase 합산 저장영역(ASO) 큐브의 사용자정의 계산에 대한 이 샘플 사용 사례는 실적 멤버, 차변 멤버 및 오프셋을 활용하여 비즈니스 임대 비용 할당을 수행합니다.
다음 차원의 아웃라인을 고려하십시오.
-
회사 - CompanyA, CompanyB 및 기타 하위 항목을 포함합니다.
-
부서 - 101, 102, 103과 같이 번호가 매겨진 부서를 포함합니다.
-
계정 - 계정 5740은 임대 비용 계정이고 SQFT는 각 부서에 대한 평방 푸티지를 기록하는 데 사용되는 통계 계정입니다.
-
시나리오 - 실제 멤버는 데이터가 게시된 위치이고 할당 멤버는 할당 및 사용자정의 계산이 저장된 위치입니다. 시나리오 멤버는 하위 멤버 실제 및 할당을 집계하는 상위 멤버입니다.
-
연도 - 월 및 분기별로 구성된 시간 차원입니다.
-
지역은 시/도 및 구/군/시별로 구성된 차원입니다.
-
차변이 대상이고 대변이 차감인 금액 유형입니다.
-
프로젝트 - 프로젝트(예: Proj1, Proj2)를 포함하는 차원입니다.
POV는 사용자정의 계산을 실행할 위치를 나타내는 MDX 세트 표현식입니다. 다음과 같이 지정됩니다.
CrossJoin( { ( [Company], [101], [Jan], [Scenario] ) },
Descendants( Geography, Geography.Levels(0)) )
DebitMember는 양수 결과 값을 작성해야 하는 차변 멤버를 나타내는 MDX 멤버 표현식입니다. [BeginningBalance_Debit]로 지정됩니다.
CreditMember는 음수 및 상계 결과 값을 작성해야 하는 실적 멤버를 나타내는 MDX 멤버 표현식입니다. [BeginningBalance_Credit]로 지정됩니다.
주:
모든 결과 값의 합계가 음수인 경우 차변 멤버에 오프셋이 기록됩니다.
오프셋은 오프셋 항목을 만들어야 하는 위치를 나타내는 MDX 튜플 표현식입니다. ([Account_NA], [Project_NA])로 지정됩니다.
오프셋 표현식이 대상 및 POV와 결합되어 오프셋 항목이 생성되는 위치를 결정합니다. 차원이 겹치면 오프셋 위치를 확인하는 순서는 오프셋, 대상 및 POV 순서입니다.
대상은 사용자정의 계산 결과를 쓸 위치를 나타내는 MDX 튜플 표현식입니다. (Allocation)로 지정됩니다.
대상 표현식은 사용자정의 계산 스크립트에서 POV 및 각 라인의 왼쪽과 결합되어 결과가 기록되는 위치를 결정합니다. 차원이 겹치면 대상 위치를 분석하는 순서가 방정식, 대상 및 POV의 왼쪽 순서입니다. 이 예에서는 대상이 POV에 지정된 시나리오 멤버를 대체하므로 결과가 할당 멤버에 기록됩니다.
다음은 사용자정의 계산 스크립트의 예입니다.
(AccountA,Proj1) := 100;
([AccountB], [Proj1]) := ([AccountB], [Proj1]) * 1.1;
(AccountC,Proj1) :=
((AccountB,Proj1,2007) + (AccountB, Proj1)) / 2;
(AccountA,Proj2) :=
((AccountD,Proj1) +
(AccountB,Proj2)) / 2;POV의 각 조합에 대해
-
계산 스크립트는 현재 POV 조합의 컨텍스트에서 실행됩니다.
-
하나의 오프셋 값이 대상 위치에 기록됩니다.
주:
각 공식(계산 스크립트의 라인)은 순차적이 아닌 동시에 실행됩니다. 따라서 후속 공식에서 하나의 공식 결과를 사용할 수 없습니다.
소스 영역을 정의하려면 사용자정의 계산 스크립트를 검토하고 방정식의 오른쪽에서 참조되는 멤버를 확인합니다. 최소한 소스 영역에는 사용자정의 계산 스크립트의 지정 명령문 오른쪽에 있는 모든 멤버가 포함되어야 합니다.
소스 영역을 단일 MDX 집합으로 정의합니다. 방정식의 오른쪽에 있는 멤버가 둘 이상의 차원에 있는 경우 CrossJoin을 사용하여 두 세트에서 세트를 작성할 수 있습니다. CrossJoin은 두 세트만 허용하므로 중첩된 CrossJoins를 사용해야 할 수 있습니다.
위 사용자정의 계산 스크립트의 출처 영역은 다음과 같습니다.
Crossjoin(
{[AccountB], [AccountD]},
Crossjoin(
{[Proj1], [Proj2]}, {[2007]}
)
)
스크립트에 지정되지 않은 소스 영역에는 멤버를 포함할 필요가 없습니다. 예를 들어, 스크립트에 사용되지 않는 소스 영역에 [AccountC]를 추가한 경우 무시되고 성능이 약간 저하될 수 있습니다.
소스 영역에서 숫자를 고려할 필요가 없습니다. 예를 들어 사용자정의 계산 스크립트의 다음 지정에서는 소스 영역에 추가할 항목이 없습니다. ([Bud Var]):=10.
NONEMPTYTUPLE로 사용자정의 계산 최적화
NONEMPTYTUPLE 등록정보를 사용하면 Essbase 합산 저장영역(ASO) 사용자정의 계산 스크립트를 최적화하여 큰 희소 데이터 세트를 계산할 때 빈 튜플을 건너뛰어 메모리 리소스를 절약할 수 있습니다.
큰 데이터 세트는 매우 희소할 수 있으므로 사용자 정의 계산 스크립트에서 NONEMPTYTUPLE 속성을 사용하면 스크립트를 최적화하여 메모리 리소스를 절약할 수 있습니다.
MDX에서 튜플-표현식 쌍 중 하나 또는 일련의 쌍을 사용하여 사용자정의 계산 스크립트를 생성하고 세미콜론으로 종료합니다. 선택적으로 사용자정의 계산 스크립트에 NONEMPTYTUPLE 속성 절을 포함하여 빈 결과 집합이 계산되지 않도록 필터링할 수 있습니다.
사용자정의 계산 스크립트에서 NONEMPTYTUPLE 등록정보 절을 사용하면 지정된 nonempty_member_list이 비어 있을 때마다 튜플에 대해 계산되는 셀 값이 비어 있음을 Essbase에 알립니다.
구문
use_optimized_way;
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;위치
-
use_optimized_way - 계산 스크립트에서 NONEMPTYTUPLE 속성을 사용하도록 설정하는 데 필요한 리터럴 키워드입니다. 생략할 경우 NONEMPTYTUPLE 지시어는 무시됩니다.
-
tuple - 멤버가 하나 이상인 MDX 지정이며, 각 멤버의 차원이 서로 다릅니다.
-
NONEMPTYTUPLE—계산 성능을 최적화하는 데 사용할 수 있는 속성(선택사항) 사용한 경우 nonempty_member_list이 포함된 이 리터럴 속성을 따라야 합니다.
-
nonempty_member_list - 서로 다른 차원의 멤버 이름이 하나 이상 있으며, 쉼표로 구분됩니다.
-
numeric_value_expression - 숫자 또는 산술 연산 등의 간단한 MDX 숫자 값 표현식입니다. 표현식은 방정식의 오른쪽에 있어야 합니다. 산술 연산자만 허용됩니다. 비산술 연산자(예: AND, OR 또는 IF 문)를 사용하는 경우 오류가 반환됩니다.
예
다음 사용자정의 계산 스크립트 예에는 빈 튜플이 계산 패스에 포함되지 않도록 필터링하는 NONEMPTYTUPLE 속성 절이 포함됩니다.
use_optimized_way;
([Balance].[Net Balance].[Net Change].[Allocation Out]):= NONEMPTYTUPLE ([Balance].[Remainder],[Rule]) -(([Balance].[Remainder],[Rule])*(20.24000/100));([2014], [August], [Actual]):= NONEMPTYTUPLE ([2014], [January], [Actual]) ([2014], [January], [Actual]);추가 정보