Essbase 계산 정의
계산은 특정 유형의 데이터를 파생시키는 데 필수적입니다. 계산에서 파생된 데이터를 계산된 데이터라고 하며, 계산되지 않은 소스 데이터를 입력 데이터라고 합니다. 통합, 계정 태그, 공식, 함수 및 동적 계산을 사용하여 Essbase 데이터베이스에 대한 최적 계산 논리를 정의하는 방법을 알아봅니다.
다음 항목에서는 TBC 애플리케이션의 제품 및 측정 차원을 사용하여 여러 Essbase 데이터베이스에서 발견되는 여러 유형의 공통 계산을 설명합니다.
차원 및 멤버 통합
표준 차원의 멤버를 정의할 때 Essbase는 + 통합 연산자(추가를 나타내는 더하기 기호)를 사용하여 멤버에 자동으로 태그를 지정합니다. 즉, 통합 멤버 중 상위 값을 파생시키기 위해 멤버가 추가됩니다. 필요에 따라 멤버 통합 등록정보를 변경할 수 있습니다.
통합은 Essbase에서 가장 자주 사용되는 계산입니다. 이 항목에서는 제품 차원을 사용하여 통합을 설명합니다.
TBC 응용 프로그램에는 다음과 같은 여러 통합 경로가 있습니다.
-
개별 제품은 제품군으로 롤업되고 제품군은 Product로 통합됩니다. 또한 TBC 개요에는 여러 통합 경로가 필요합니다. 일부 제품은 여러 범주로 통합해야 합니다.
-
주가 리전으로 집계되고 리전이 시장으로 통합됩니다.
-
월은 분기로 롤업되고 분기는 연도로 롤업됩니다.
통합 연산자는 Essbase가 분기의 각 멤버에 대한 데이터를 상위 멤버로 롤업하는 방법을 정의합니다. 예를 들어, 기본 추가(+) 연산자를 사용하는 경우 Essbase는 아래와 같이 100‑10, 100‑20 및 100‑30을 추가하고 그 결과를 상위 항목인 100에 저장합니다.
그림 1-7 TBC 제품 치수

Product 차원에는 주로 더하기(+) 연산자가 포함되어 있습니다. 이 연산자는 각 멤버 그룹이 추가되고 상위 멤버로 롤업됨을 나타냅니다. 다이어트에는 Essbase가 상위 제품에 대한 통합에 다이어트 멤버를 포함하지 않음을 나타내는 틸드(~) 연산자가 있습니다. 다이어트 멤버는 전적으로 공유되는 멤버로 구성됩니다. TBC 제품 관리 그룹은 보고서에서 다이어트 음료를 격리 할 수 있기를 원하므로 TBC는 전체 통합에 영향을 미치지 않는 별도의 다이어트 멤버를 만들었습니다.
포지션 및 운영자가 통합에 미치는 영향
Essbase는 분기의 데이터를 하향식 순서로 계산합니다. 예를 들어, 순서대로 추가(+) 연산자로 태그가 지정된 두 멤버와 곱하기(*) 연산자로 태그가 지정된 세번째 멤버가 있는 경우 Essbase는 처음 두 멤버를 추가하고 그 합계를 세번째로 곱합니다.
Essbase는 통합 시 항상 최상위 멤버로 시작하므로 멤버의 순서와 레이블이 중요합니다.
공유 멤버 통합
공유 멤버도 통합 경로에 영향을 줍니다. 공유 멤버 개념을 사용하면 동일한 이름을 가진 두 멤버가 동일한 데이터를 공유할 수 있습니다. 공유 멤버는 다른 멤버에 포함된 데이터에 대한 포인터를 저장하므로 Essbase는 데이터를 한 번만 저장합니다. 공유 멤버는 동일한 차원에 있어야 합니다. 여러 멤버가 데이터를 공유할 수 있습니다.
통합 체크리스트
다음 체크리스트를 사용하여 통합을 정의합니다.
-
아웃라인에서 통합을 식별했습니까?
-
각 멤버에 적절한 통합 연산자로 태그를 지정했습니까?
-
지정된 멤버에 대해 공유 멤버 태그를 지정했습니까?
-
공유 멤버가 공유가 아닌 속성 차원 내에서 설계될 경우 더 효율적입니까?
예제 측정 차원의 태그 및 연산자
계정 태그가 지정된 측정항목 차원은 시간 및 계정 데이터를 모두 사용하므로 가상 TBC 아웃라인에서 가장 복잡한 차원입니다. 또한 Essbase가 아웃라인을 계산하는 데 도움이 되는 공식 및 특수 태그가 포함되어 있습니다.
TBC에서 정의한 Measures 차원 태그를 검사합니다. 이전 항목에서는 Measures 차원의 많은 속성에 대해 설명합니다. 더하기(+) , 빼기(–) 및 통합(~) 연산자 없음, 계정 및 레이블 전용 태그는 다음과 같습니다.
-
재고 및 비율 멤버 이름은 사용자가 데이터를 탐색할 수 있도록 지원합니다. 이들은 데이터를 포함하지 않으므로 레이블 전용 태그를 받습니다.
-
측정항목 차원 자체에는 레이블 전용 태그가 있습니다. 일부 측정 단위 멤버에는 동적 계산 태그가 있습니다.
-
일부 측정항목 멤버에는 시간 균형 태그(TB 우선 또는 TB 마지막)가 있습니다.
그림 1-8 TBC 측정 치수

계정 차원 계산
계정으로 태그 지정된 Essbase 차원은 계산에 영향을 주는 특수 등록정보를 사용할 수 있습니다. 시간 균형 태그 또는 등록정보는 기간에 따라 달라지는 계정을 계산하는 방법에 대한 지침을 Essbase에 제공합니다. 차이 보고 속성은 Essbase가 실제 데이터와 예산 데이터 간의 차이를 계산하는 방법을 정의합니다.
이 항목에서는 계정으로 태그 지정된 차원에 대한 두 가지 계산 형식에 대해 설명합니다.
시간 균형 속성
시간 균형 태그/등록 정보를 사용하려면 [계정] 태그가 지정된 차원과 시간으로 태그가 지정된 차원이 필요합니다. 첫 번째, 마지막, 평균 및 비용 태그는 계정 차원 멤버에만 사용할 수 있습니다.
TBC 측정 차원에서 기초 재고 데이터는 TBC가 매월 초에 보유하는 재고를 나타냅니다. 개시 재고에 대한 분기별 값은 분기의 첫 달에 대한 개시 값과 같습니다. 재고 개시에는 시간 균형 태그인 TB가 먼저 필요합니다.
기말 재고 데이터는 TBC가 매월 말에 보유하는 재고를 나타냅니다. 종료 재고에 대한 분기별 값은 분기의 지난 달에 대한 종료 값과 같습니다. 기말 재고에는 시간 잔액 태그(TB 마지막)가 필요합니다. 다음 테이블에서는 계정 차원에 대한 시간 누계 태그를 정의합니다.
표 1-6 계정 멤버 태그
| 태그 | 설명 |
|---|---|
|
시간 누계 최종 |
마지막 하위 멤버의 값이 상위 멤버로 전달됩니다. 예를 들어, 3월은 Qtr1로 전달됩니다. |
|
최초 시간 누계 |
첫 번째 자식의 값은 부모에게 전달됩니다. 예를 들어, Jan은 Qtr1로 전달됩니다. |
다음 표에서 Qtr1(오른쪽의 두 번째 열) 및 Year(오른쪽의 가장 오른쪽 열)는 시간 차원의 통합이 계정 차원의 시간 누계 속성에 의해 어떻게 영향을 받는지 보여줍니다. 데이터는 1분기에만 표시됩니다.
표 1-7 시간 균형 속성의 영향을 받는 TBC 통합
| 차원 | 1월 | Feb | 3월 | Qtr1 | Year |
|---|---|---|---|---|---|
|
고객사 회원1 |
11 |
12 |
13 |
36 |
1분기 + 2분기 + 3분기 + 4분기 |
|
계정 멤버2(첫번째 TB) |
20 |
25 |
21 |
20 |
20 |
|
계정 멤버3(최근 TB) |
25 |
21 |
30 |
30 |
4분기 값 |
일반적으로 시간 차원에서 상위의 계산은 상위의 하위 통합 및 공식을 기반으로 합니다. 그러나 계정 분기의 멤버가 먼저 TB로 표시된 경우 시간 차원의 모든 상위 멤버가 먼저 TB로 표시된 멤버와 일치합니다.
예는 시간 균형 등록 정보를 참조하십시오.
편차 보고
하나의 TBC Essbase 요구사항은 실제 데이터와 예산 데이터에 대한 차이 보고를 수행하는 기능입니다. 차이 보고 계산을 수행하려면 회사에 대한 비용을 나타내는 항목에 비용 보고 태그가 있어야 합니다. 재고 멤버, 총 비용 멤버 및 COGS 멤버는 각각 차이 보고를 위한 비용 보고 태그를 받습니다.
Essbase는 두 가지 차이 보고 등록정보(비용 및 비비용(기본값)를 제공합니다. 차이 보고 등록정보는 Essbase가 멤버 공식에 @VAR 또는 @VARPER 함수를 사용하는 멤버의 실제 데이터와 예산 데이터 간 차이를 계산하는 방법을 정의합니다.
멤버에 비용 태그를 지정하면 @VAR 함수는 예산 - 실제를 계산합니다. 예를 들어 예산 금액이 $100이고 실제 금액이 $110인 경우 차이는 –10입니다.
비용 보고 태그가 없으면 @VAR 함수는 실제 - 예산을 계산합니다. 예를 들어 예산 금액이 $100이고 실제 금액이 $110인 경우 차이는 10입니다.
공식 및 함수
공식은 Essbase 아웃라인의 멤버 간 관계를 계산합니다. 멤버 또는 계산 스크립트에서 공식을 적용할 수 있습니다. 함수는 특수 계산을 수행하고 멤버 또는 데이터 값 집합을 반환하는 미리 정의된 루틴입니다. 공식은 연산자 및 함수와 차원 이름, 멤버 이름 및 숫자 상수로 구성됩니다.
Essbase는 다음 연산자를 지원합니다.
-
산술 연산을 수행하는 수학 연산자
-
조건부 연산자는 논리적 조건을 계산에 넣습니다.
-
특정 데이터베이스 멤버 조합의 데이터 값을 가리키는 다차원 연산자
Essbase 함수에는 Essbase의 계산 기능을 확장하기 위해 미리 정의된 루틴이 175개 이상 포함되어 있습니다. Essbase에는 다음 함수가 포함됩니다.
-
TRUE 또는 FALSE 값을 반환하여 조건부 테스트를 제공하는 부울 함수
-
특수 수학 계산을 수행하는 수학 함수
-
현재 멤버의 위치를 기반으로 계산하는 동안 데이터베이스 내에서 데이터 값을 조회하는 관계 함수
-
멤버 범위를 다른 함수 또는 명령에 대한 인수로 선언하는 범위 함수
-
특수 재무 계산을 수행하는 재무 기능
-
멤버 세트 함수 - 지정된 멤버를 기반으로 하며 멤버 목록을 생성합니다.
-
하위 멤버 간에 상위 레벨에서 입력되는 값을 할당하는 할당 함수
-
데이터 평활화, 데이터 보간 또는 미래 값 계산을 위해 데이터를 조작하는 예측 기능
-
고급 통계를 계산하는 통계 함수
-
계산 공식에서 일자 및 시간 특성을 사용하는 일자 및 시간 함수
-
계산 모드 함수 - Essbase가 공식 계산에 사용하는 계산 모드를 지정합니다.
측정항목 차원은 다음 공식을 사용합니다.
-
마진 = 판매 - COGS
-
총 비용 = 마케팅 + 급여 + 기타
-
이익 = 마진 – 총 비용
-
이익 % = 이익 % 판매
-
마진 % = 마진 % 판매
-
온스당 이익 = 이익 / @ATTRIBUTEVAL(@NAME(운스))
Essbase는 통합 연산자를 사용하여 마진, 총 비용 및 이익 멤버를 계산합니다. Margin% 공식은 % 연산자를 사용합니다. 즉, "매출의 백분율로 마진을 표현합니다." Profit% 공식은 동일한 % 연산자를 사용합니다. 온스당 이익 공식은 분할 연산자(/)와 함수(@ATTRIBUTEVAL)를 사용하여 온스 크기로 조정된 제품의 온스별 수익성을 계산합니다.
주:
온스당 이익 공식에서 @NAME 함수는 @ATTRIBUTEVAL 함수에 대한 문자열 "Ounces"를 처리하는 데도 사용됩니다.
전체 연산자, 함수 및 구문 리스트는 계산 함수 리스트를 참조하십시오. 또한 블록 저장 영역 큐브에 대한 공식 개발을 참조하십시오.
동적 계산
데이터베이스 계산을 설계할 때 멤버를 동적 계산 멤버로 정의할 수 있습니다. 멤버를 동적 계산으로 태그 지정하면 Essbase는 정규 데이터베이스 계산 중에 멤버 조합을 미리 계산하는 대신 데이터를 검색할 때 해당 멤버의 조합을 계산합니다.
동적 계산은 정규 데이터베이스 계산 시간을 단축하지만 동적으로 계산된 데이터 값에 대한 검색 시간을 늘릴 수 있습니다.
다음 개요에서 TBC 측정 단위 차원에는 동적 계산 - 수익, 마진, 총 비용, 마진 % 및 수익 % 태그가 지정된 여러 멤버가 포함됩니다.
그림 1-9 TBC 측정 단위 차원, 동적 계산 태그

전체 데이터베이스 계산이 수행되면 동적 계산 멤버 및 해당 공식이 계산되지 않습니다. 이러한 멤버는 사용자가 쿼리할 때 계산됩니다(예: Smart View). Essbase는 질의된 값을 저장하지 않으며 모든 후속 질의에 대한 값을 재계산합니다.
데이터 값을 동적으로 계산할 시기를 결정하려면 다음 영역에서 우선순위를 고려하십시오.
-
최적 정규 계산 시간(뱃치 계산)
-
낮은 디스크 공간 사용량
-
데이터베이스 재구조화 시간 단축
-
유저에 대한 빠른 데이터 검색
-
백업 시간 단축
데이터 값의 동적 계산을 참조하십시오.
2단계 계산된
두 패스 등록정보는 계정으로 태그 지정된 Essbase 차원의 멤버와 동적 계산으로 태그 지정된 멤버에서만 작동합니다. 이 레이블은 원하는 값을 생성하기 위해 일부 멤버 공식을 두 번 계산해야 함을 나타냅니다.
TBC 데이터베이스의 Margin % 및 Profit %에는 two-pass 레이블이 포함되어 있습니다.
다음 예에서는 Profit %(수익 % 판매 공식 기준)에 two-pass 태그가 있는 이유를 보여 줍니다. 테이블에는 다섯 개의 열(열 헤더는 Dimension, Jan, Feb, Mar 및 Qtr1로 왼쪽에서 오른쪽으로 레이블이 지정됨)과 세 개의 행(Profit, Sales 및 Profit %로 레이블이 지정됨)이 있습니다. 1월, 2월, 3월 및 1분기는 연도 차원의 멤버입니다. Profit, Sales 및 Profit %는 측정항목(계정) 차원의 멤버입니다.
다음 예에서는 Essbase로 로드할 초기 데이터를 정의합니다. Profit -> Jan, Profit -> Feb, Profit -> Mar에 대한 데이터 값은 100입니다. Sales -> Jan, Sales -> Feb, Sales -> Mar에 대한 데이터 값은 1000입니다.
표 1-8 데이터가 Essbase에 로드됨
| 차원 | 1월 | Feb | 3월 | Qtr1 |
|---|---|---|---|---|
|
수익 |
100 |
100 |
100 |
N/A |
|
Sales |
1000 |
1000 |
1000 |
N/A |
|
이익 % |
N/A |
N/A |
N/A |
N/A |
먼저 Essbase가 측정항목 차원을 계산합니다. 다음 표에서 이익 % -> 1월, 이익 % -> 2월 및 이익 % -> 3월의 데이터 값은 10%입니다.
Essbase가 측정 차원을 계산한 후의 표 1-9 데이터
| 차원 | 1월 | Feb | 3월 | Qtr1 |
|---|---|---|---|---|
|
수익 |
100 |
100 |
100 |
|
|
Sales |
1000 |
1000 |
1000 |
|
|
이익 % |
10% |
10% |
10% |
N/A |
다음으로 Essbase는 연도 차원을 계산합니다. 차원에서 데이터가 롤업됩니다. 다음 표에서는 Profit -> Qtr1(300) 및 Sales -> Qtr1(3000)의 데이터 값이 올바릅니다. Profit %가 2단계 계산으로 태그 지정되어 있으므로 Profit % -> Qtr1(30%)의 데이터 값이 잘못되었습니다.
Essbase가 연도 차원을 계산한 후의 표 1-10 데이터
| 차원 | 1월 | Feb | 3월 | Qtr1 |
|---|---|---|---|---|
|
수익 |
100 |
100 |
100 |
300 |
|
Sales |
1000 |
1000 |
1000 |
3000 |
|
이익 % |
10% |
10% |
10% |
30% |
그런 다음 Essbase는 수익 % 멤버가 발생할 때마다 수익 퍼센트를 재계산합니다. 다음 표에서는 두번째 통과 후 Profit % -> Qtr1(10%)의 데이터 값이 올바릅니다.
표 1-11 Essbase의 수익률 재계산 후 데이터
| 차원 | 1월 | Feb | 3월 | Qtr1 |
|---|---|---|---|---|
|
수익 |
100 |
100 |
100 |
300 |
|
Sales |
1000 |
1000 |
1000 |
3000 |
|
이익 % |
10% |
10% |
10% |
10% |