계산 스크립트의 공식

Essbase 공식은 데이터베이스 아웃라인의 멤버 간 수학적 및 위치 관계를 계산합니다. 아웃라인의 멤버에 적용하거나 계산 스크립트에서 계산을 엄격하게 제어하는 데 사용할 수 있습니다.

계산 스크립트에서 Essbase 공식을 정의할 때는 큐브 아웃라인의 멤버에 적용된 공식보다 우선합니다. 이 방법으로 공식을 사용하면 큐브 아웃라인으로 인코딩된 관계를 벗어나 일괄 처리 계산의 유연성을 높일 수 있습니다.

기본 방정식, 조건 방정식 및 상호 종속 공식을 사용하여 계산할 공식을 작성할 수 있습니다.

Essbase 계산 스크립트에서 다음 두 작업을 모두 수행할 수 있습니다.

  • 큐브 아웃라인에서 기존 멤버 공식 계산

  • 계산 스크립트 실행 기간 동안 지속되는 새 공식을 정의합니다.

아웃라인의 멤버에 적용되는 기존 공식을 계산하려면 멤버 이름 뒤에 세미콜론(;)을 사용합니다. 예를 들어, 계산 스크립트의 다음 명령은 아웃라인의 차이 멤버에 적용되는 공식을 계산합니다.

Variance;

아웃라인 계산에서 발생하는 값을 대체하려면 계산 스크립트에서 수동으로 공식을 적용할 수 있습니다. 예를 들어 계산 스크립트의 다음 공식은 큐브를 순환하여 급여, 마케팅 및 기타 멤버에 값을 추가하고 결과를 비용 멤버에 배치합니다. 이 공식은 아웃라인의 비용 멤버에 배치된 공식을 대체합니다.

Expenses = Payroll + Marketing + Misc;

주:

공유 멤버 또는 레이블 전용 멤버에 공식을 적용할 수 없습니다.

참조: 블록 저장 영역 큐브 공식 개발.

Essbase 계산 스크립트의 기본 방정식

Essbase 계산 스크립트에서 방정식을 사용하여 큐브 아웃라인 멤버에 값을 지정합니다. 지정은 계산 스크립트의 실행 기간 동안 지속됩니다.

Essbase 계산 스크립트의 방정식 구문은 다음과 같습니다.

member = mathematical_expression;

member는 아웃라인의 멤버 이름이고, mathematical_expression은 적합한 수학 표현식입니다.

Essbase는 표현식을 평가하고 지정된 멤버에 값을 지정합니다.

다음 예에서 Essbase는 데이터베이스를 순환하여 Sales의 값에서 COGS의 값을 빼고 결과를 Margin에 배치합니다.

Margin = Sales - COGS;

이 예에서 Essbase는 데이터베이스를 순환하여 Retail의 값에서 Cost의 값을 빼고, Retail의 값 백분율로 결과 값을 계산하고, Markup에 결과를 배치합니다.

Markup = (Retail - Cost) % Retail;

방정식에서 >(보다 큼) 및 <(보다 작음) 논리 연산자를 사용할 수도 있습니다.

다음 예에서 2월 판매가 1월 판매보다 큰 경우 판매 증가 플래그는 값이 1이 되고, false이면 결과는 값이 0이 됩니다.

Sales Increase Flag = Sales -> Feb > Sales -> Jan;

Essbase 계산 스크립트의 조건부 방정식

Essbase 계산 스크립트 공식에서 조건부 방정식을 사용하여 논리인지 여부를 정의하고 계산 중 이벤트 흐름을 제어할 수 있습니다.

계산 스크립트에서 멤버 공식의 일부로 IF 문을 사용하는 경우 다음을 수행해야 합니다.

  • IF 문을 단일 멤버와 연결합니다.

  • IF 문을 괄호로 묶습니다.

다음 예제에서 전체 IF…ENDIF 문은 괄호로 묶이고 Profit 멤버인 Profit (IF(...)...)와 연관됩니다.

Profit
(IF (Sales > 100)
   Profit = (Sales - COGS) * 2;
ELSE
   Profit = (Sales - COGS) * 1.5;
ENDIF;)

Essbase는 데이터베이스를 순환하고 다음 계산을 수행합니다.

  1. IF 문은 현재 멤버 조합에 대한 Sales 값이 100보다 큰지 여부를 확인합니다.

  2. Sales가 100보다 큰 경우 Essbase는 Sales의 값에서 COGS의 값을 빼고 차이를 2로 곱한 다음 결과를 Profit에 배치합니다.

  3. Sales가 100보다 작거나 같은 경우 Essbase는 Sales의 값에서 COGS의 값을 빼고 차이에 1.5를 곱한 다음 결과를 Profit에 배치합니다.

조건부 명령 및 계산 스크립트 흐름 제어에 대한 자세한 내용은 계산 명령 그룹을 참조하십시오.

Essbase 계산 스크립트의 상호 종속 공식

아웃라인의 공식과 마찬가지로 계산 스크립트의 공식은 Essbase 큐브 아웃라인의 멤버 간 수학적 관계를 계산합니다.

해당 평가가 동일한 차원의 다른 멤버 값에 종속되는 경우 공식은 상호 종속으로 간주됩니다.

Essbase에서 상호 종속적인 공식의 좋은 예는 현금 흐름 평가로, 개시 재고가 이전 월의 마감 재고에 종속됩니다.

계산 스크립트에서 상호 종속적인 공식을 사용하는 경우 IF 문과 동일한 규칙이 적용됩니다. 다음 작업을 수행해야 합니다.

  • 공식을 단일 멤버와 연계

  • 공식을 괄호로 묶습니다.

다음 예에서는 전체 상호 종속 공식이 괄호로 묶여 있고 기초 재고 멤버와 연계됩니다.

"Opening Inventory"
(IF(NOT @ISMBR (Jan))
   "Opening Inventory" = @PRIOR("Ending Inventory");
ENDIF;)
"Ending Inventory" = "Opening Inventory" - Sales + Additions;

계산 스크립트 공식 및 지능형 계산 상태

관계 또는 재무 함수를 포함하는 희소 차원 멤버의 공식은 Essbase Intelligent Calculation이 블록을 클린으로 표시하는 경우에도 항상 재계산을 일으킵니다.

희소 차원 멤버에 공식이 있고 공식에 다음 유형의 함수가 포함되어 있다고 가정합니다.

  • 관계(예: @PRIOR 또는 @NEXT)

  • 재무(예: @NPV 또는 @INTEREST)

지능형 계산을 위해 블록이 클린으로 표시된 경우에도 Essbase는 항상 공식을 포함하는 데이터 블록을 재계산합니다.

데이터 블록의 지능형 계산블록 스토리지 큐브에 대한 지능형 계산을 참조하십시오.

스크립트의 공식 및 차원 그룹화

계산 스크립트에서 Essbase 멤버 공식 및 차원을 신중하게 그룹화하여 계산 성능이 크게 향상될 수 있습니다.

일련의 멤버 공식 계산

공식을 계산할 때는 괄호를 올바르게 사용해야 합니다.

다음 예에서 잘못 배치된 괄호를 사용하면 Essbase가 큐브를 통해 두 개의 계산 패스를 수행합니다. 한 번은 Qtr1 및 Qtr2 멤버의 공식을 계산하고 한 번은 Qtr3의 공식을 계산합니다.

(Qtr1;
Qtr2;)
Qtr3;

반면, 다음 구성으로 인해 Essbase는 Qtr1, Qtr2 및 Qtr3 멤버의 공식을 계산하여 큐브를 한 번만 순환합니다.

Qtr1;
Qtr2;
Qtr3;

또는

(Qtr1;
Qtr2;
Qtr3;)

마찬가지로 다음 공식을 사용하면 Essbase가 큐브를 한 번 순환하여 한 번에 두 공식을 모두 계산합니다.

Profit = (Sales - COGS) * 1.5;
Market = East + West;

일련의 차원 계산

일련의 차원을 계산할 때 가능한 한 차원을 그룹화하여 성능을 최적화할 수 있습니다.

예를 들어, 다음 공식으로 인해 Essbase가 큐브를 한 번만 순환합니다.

CALC DIM(Year, Measures);

반대로, 다음 구문으로 인해 Essbase는 각 CALC DIM 명령에 대해 한 번씩 큐브를 두 번 순환합니다.

CALC DIM(Year);
CALC DIM(Measures);