Essbase 공식 최적화

계산 및 쿼리에 대한 Essbase 블록 저장영역 공식 처리를 최적화하기 위해 계산 대신 통합을 사용하여 공식을 피하거나, 가능한 경우 더 간단한 공식을 사용하거나, 복잡한 공식에 대한 성능을 조정하는 단계를 수행하거나, 하이브리드 모드로 전환할 수 있습니다.

큐브 아웃라인에서 공식을 신중하게 사용하여 계산 성능을 크게 향상시킬 수 있습니다. 예를 들어, 계산 스크립트에 공식을 배치하는 대신 데이터베이스 아웃라인의 멤버에 공식을 배치하여 계산 성능을 향상시킬 수 있습니다. 블록 저장 영역 큐브 공식 개발을 참조하십시오.

다음 섹션에서는 비하이브리드 모드, 블록 스토리지 큐브에서 계산 성능에 영향을 주는 공식 문제를 처리하는 방법에 대해 설명합니다.

하이브리드 모드 최적화의 경우 대신 Hybrid Mode for Fast Analytic Processing을 참조하십시오.

Essbase 멤버 통합

큐브 아웃라인을 사용하여 Essbase 데이터 값을 롤업하는 것이 공식을 사용하여 계산하는 것보다 효율적입니다.

예를 들어 아래와 같이 멤버 100-10, 100-20 및 100-30을 멤버 100으로 통합하는 것이 멤버 100에 다음 공식을 적용하는 것보다 효율적입니다.

100-10 + 100-20 + 100-30

그림 34-1 통합 예


이 이미지는 멤버 100-10, 100-20 및 100-30이 멤버 100으로 통합되는 개요를 보여줍니다.

멤버 통합의 예를 참조하십시오.

단순 Essbase 멤버 공식

Essbase 공식이 단순하면 블록 저장영역 계산 성능이 복합 공식보다 낮아집니다. 블록 크기도 성능의 한 요소입니다. 더 간단한 공식은 다차원 참조, 범위 함수, 재무 함수 또는 관계 함수를 사용하지 않는 공식입니다.

단순 공식을 사용하고 블록 크기가 비정상적으로 크지 않은 경우 계산 성능에 큰 영향을 주지 않고 희소 또는 밀집 차원의 멤버에 공식을 배치할 수 있습니다. 블록 크기가 클수록 단순 공식이 계산 성능에 미치는 영향이 커집니다.

단순 공식은 비율 또는 백분율과 같은 것으로, 다음 요구 사항을 충족합니다.

  • 다른 차원(희소 또는 밀집)의 값을 참조하지 않습니다. 예를 들어 단순 공식은 제품 -> 1월을 참조할 수 없습니다.

  • 범위 함수를 사용하지 않습니다. 예를 들어 단순 공식은 @AVGRANGE, @MAXRANGE, @MINRANGE 또는 @SUMRANGE를 사용할 수 없습니다.

  • 관계 또는 재무 기능을 사용하지 않습니다. 예를 들어 단순 공식은 @ANCESTVAL, @NEXT, @PARENTVAL, @SHIFT, @ACCUM 또는 @GROWTH를 사용할 수 없습니다.

참조

블록 크기와 계산 성능 간의 관계에 대한 자세한 내용은 블록 크기 및 블록 밀도를 참조하십시오.

공식이 계산 성능에 미치는 영향에 대한 자세한 내용은 상향식 및 하향식 계산을 참조하십시오.

범위 및 재무 기능

관계 함수

다차원 연산자

복합 Essbase 멤버 공식

Essbase 공식이 복잡한 경우 더 간단한 공식보다 블록 저장영역 계산 성능에 영향을 줍니다. 복잡한 공식을 최적화하려면 밀집 치수에 공식을 적용하고 밀도를 높이며 FIX를 사용하여 범위를 좁힙니다.

복합 공식을 사용하는 경우 다음 지침을 적용하여 성능을 향상시킬 수 있습니다.

  • 가능한 경우 밀집 차원의 멤버에 공식을 적용합니다. 가능하지 않은 경우 하향식 계산을 상향식으로 변경할 수 있는지 여부를 결정합니다(대형 아웃라인의 희소 차원 공식 참조).

  • 계산 스크립트에서 FIX 명령을 사용하여 필수 데이터 블록만 계산합니다.

  • 데이터베이스의 밀도를 늘립니다(기존 데이터 블록과 가능한 데이터 블록의 비율).

복합 공식은 다음 요구사항 중 하나를 충족하는 공식입니다.

  • 다른 차원(희소 또는 밀집)의 멤버 또는 멤버를 참조합니다(예: 제품 -> 1월).

  • @AVGRANGE, @MAXRANGE, @MINRANGE 또는 @SUMRANGE 등 범위 함수를 1개 이상 사용하십시오.

  • @ANCESTVAL, @NEXT, @PARENTVAL, @SHIFT, @ACCUM 또는 @GROWTH 등 관계 또는 재무 함수를 사용합니다.

희소 차원 멤버에 적용되는 경우 복합 공식은 더 많은 계산 오버헤드를 생성하므로 성능이 느려집니다. 이 문제는 복잡한 공식이 있는 경우 Essbase가 가능한 모든 데이터 블록과 복잡한 공식이 있는 멤버와 관련된 모든 기존 데이터 블록에 대해 계산을 수행해야 하기 때문에 발생합니다. 희소 차원 멤버에 관계 또는 재무 함수가 있으면 Essbase가 가능한 모든 블록 및 기존 블록에 대해 계산을 수행하여 오버헤드를 더욱 늘립니다.

따라서 관계 또는 재무 함수를 포함하는 복잡한 공식은 관계 또는 재무 함수를 포함하지 않는 복잡한 공식보다 더 큰 간접비를 생성합니다.

다음 두 가지 예는 복잡한 공식 오버헤드를 보여줍니다.

  • 큐브에 90개의 기존 데이터 블록과 100개의 잠재적 데이터 블록이 있는 경우 복잡한 공식에 대한 오버헤드가 크지 않으며 값을 읽고 쓸 수 있는 10개 이상의 추가 블록이 아닙니다.

  • 큐브에 10개의 기존 데이터 블록과 100개의 잠재적 데이터 블록이 있는 경우 오버헤드는 아웃라인 구조 및 기타 요인에 따라 복잡한 공식이 없는 오버헤드의 10배를 더하여 읽고 쓸 수 있는 90개의 추가 블록입니다.

모든 경우에 기존 데이터 블록 대 가능한 데이터 블록의 비율이 낮을수록 계산 성능 오버헤드가 높아지고 성능이 느려집니다.

참조

블록 크기와 계산 성능 간의 관계에 대한 자세한 내용은 블록 크기 및 블록 밀도를 참조하십시오.

공식이 계산 성능에 미치는 영향에 대한 자세한 내용은 상향식 및 하향식 계산을 참조하십시오.

범위 및 재무 기능

관계 함수

대형 아웃라인의 희소 차원 공식

Essbase 블록 저장영역 큐브 아웃라인의 희소 차원에 대한 복합 공식 계산을 최적화하려면 공식의 상향식 계산을 강제 적용할 수 있습니다.

SET FRMLBOTTOMUP 계산 명령을 사용하여 대형 데이터베이스 Outline의 희소 차원에서 수식 계산을 최적화할 수 있습니다. 이 명령을 사용하면 희소 멤버 공식에서 상향식 계산을 강제로 수행할 수 있습니다. 그렇지 않으면 하향식으로 계산됩니다. 상향식 및 하향식 계산을 참조하십시오.

하향식 공식에서 상향식 계산을 강제 수행하면 CALC ALL 및 CALC DIM 명령을 더욱 효율적으로 사용할 수 있습니다. SET FRMLBOTTOMUP 계산 명령 및 CALCOPTFRMLBOTTOMUP 구성 설정에 대한 설명을 검토합니다.

희소 차원의 멤버에 지정된 상수 값

희소 차원의 멤버에 상수를 지정하는 경우 Essbase는 멤버를 포함하는 희소 차원 멤버의 모든 조합에 대해 자동으로 데이터 블록을 생성합니다. 블록 생성을 제한하려면 FIX를 사용합니다.

예를 들어, 멤버 또는 계산 스크립트 공식에 다음 표현식이 포함되어 있다고 가정합니다.

California = 120;

이 공식에서 캘리포니아는 희소 차원의 멤버이고 120은 상수 값입니다. Essbase는 캘리포니아에 대해 가능한 모든 데이터 블록을 자동으로 생성하고 모든 데이터 셀에 값 120을 지정합니다. 수천 개의 데이터 블록이 생성될 수 있습니다. 성능을 향상시키려면 불필요한 값을 생성하지 않는 공식을 생성합니다.

희소 차원의 상수를 값이 필요한 교차에만 지정하려면 다음 예와 유사한 방식으로 FIX를 사용합니다.

FIX(Colas,Misc,Actual)
   California = 120;
ENDFIX

이 예제에서 Colas는 희소 차원의 멤버이며 Product; Actual은 밀집 차원의 멤버이고 Scenario; Misc는 밀집 차원 Measures의 멤버입니다. 값 120은 캘리포니아의 교차점(시장 차원), 실제(시나리오 차원), 기타(측정 단위 차원), 콜라(제품 차원) 및 연도 차원의 모든 멤버에 할당됩니다. 연도의 특정 멤버가 스크립트에 지정되지 않기 때문입니다.

Sample Basic에는 두 개의 희소 차원만 포함되기 때문에 이 예제에서는 한 블록에만 영향을 줍니다. 희소 차원이 더 있을 경우 Essbase는 희소 차원과 California 및 Colas의 모든 조합에 대한 데이터 블록을 확인하여 필요한 경우 블록을 생성합니다. 새 블록 내에서 Essbase는 측정 단위 및 시나리오 값(값 120이 지정된 값 제외)을 #MISSING으로 설정합니다.

희소 차원의 멤버에 지정된 상수 값

희소 차원의 멤버에 상수가 아닌 값을 지정할 때 원치 않는 블록 생성을 일시적으로 방지하려면 Essbase 계산 스크립트에서 SET CREATEBLOCKONEQ OFF 명령을 사용할 수 있습니다.

희소 차원의 멤버에 상수가 아닌 값을 지정하는 경우 방정식에 블록 작성 설정을 기반으로 블록이 작성됩니다. 방정식에 블록 작성 설정은 데이터베이스 레벨에서 데이터베이스 특성으로 정의됩니다. 비상수 값을 참조하십시오.

계산 스크립트 내에서 방정식에 블록 작성 설정을 일시적으로 재정의할 수 있습니다. West에 값이 없고 방정식에 블록 생성이 사용으로 설정된 경우 다음 계산의 결과를 고려하십시오.

West = California + 120;

West의 모든 하위 항목에 대해 해당 블록 값이 #MISSING인 경우에도 West와의 모든 희소 멤버 교차에 대해 불필요한 블록이 생성될 수 있습니다. 특히 대형 데이터베이스에서는 불필요한 블록을 생성하고 처리하려면 추가 처리 시간이 필요합니다.

희소 차원의 멤버에 상수가 아닌 값을 할당할 때 블록 생성을 제어하려면 다음 스크립트에 표시된 것처럼 SET CREATEBLOCKONEQ ON | OFF 계산 명령을 사용합니다.

FIX (Colas);
   SET CREATEBLOCKONEQ OFF
   West = California + 120;
   SET CREATEBLOCKONEQ ON
   East = “New York” + 100;
ENDFIX

스크립트의 시작 부분에서 Create Block on Equation 설정이 비활성화되어 있으므로 West의 하위 항목에 대한 값이 있을 때만 West 블록이 생성됩니다. 나중에 방정식에 블록 작성 설정이 활성화되어 있으므로 East에 대한 모든 블록이 작성됩니다.

주:

SET CREATEBLOCKONEQ를 사용하면 이 명령을 포함하는 계산 스크립트를 실행하는 동안에만 블록을 생성할 수 있습니다. 이 명령은 방정식에 블록 작성에 대한 전체 데이터베이스 설정을 변경하지 않습니다.

멤버 공식의 다차원 연산자

Essbase 블록 저장영역 멤버 공식을 설계할 때 방정식의 왼쪽에 있는 다차원 연산자( -> )를 사용하거나 밀집 차원에 대한 방정식에 사용할 때는 주의하십시오.

방정식의 왼쪽

계산 스크립트 성능 향상을 위해 계산 스크립트에서 FIX를 사용하여 방정식 왼쪽에 다차원 연산자가 포함된 공식이 아닌 공식 사용을 한정합니다.

예를 들어, Sample.Basic의 Jan -> Sales 값을 5% 늘리려고 한다고 가정합니다. 관련 멤버 조합만 계산하여 성능을 향상시키려면 FIX 명령을 사용합니다.

FIX(Jan)
   Sales = Sales * .05;
ENDFIX

FIX 명령을 사용하면 Essbase는 지정된 멤버 조합에 대해서만 공식을 계산합니다. 이 예에서는 1월이 포함된 조합에 대해 계산됩니다.

이 기법을 느린 다차원 연산자 접근 방식과 비교합니다. 이전 예제의 경우 데이터베이스 아웃라인의 Sales 멤버에 다음 공식을 배치합니다.

Sales(Sales -> Jan = Sales -> Jan * .05;)

Essbase는 데이터베이스를 순환하면서 1월 조합만 계산해야 하지만 시간(1월, 2월, 3월 등)으로 태그 지정된 차원의 멤버를 포함하는 모든 멤버 조합에 대한 공식을 계산합니다.

Use the FIX Command을 참조하십시오.

밀집 치수의 방정식

밀집 차원의 방정식에서 다차원 연산자를 사용하는 경우 Essbase는 다음 두 조건이 모두 적용되는 경우 필요한 블록을 자동으로 생성하지 않습니다.

  • 결과 값은 밀집 차원에서 가져옵니다.

  • 피연산자 또는 피연산자는 희소 치수에서 가져온 것입니다.

다음 기법을 사용하여 블록을 생성하고 성능 문제를 방지할 수 있습니다.

  • 결과 멤버가 밀집 차원이 아닌 희소 차원에 속하는지 확인하십시오. 이 예제에서 결과 멤버 Budget은 희소 차원에서 가져온 것입니다.

    FIX(Sales)
        Budget = Actual * 1.1;
    ENDFIX
    FIX(Expenses)
        Budget = Actual *  .95;
    ENDFIX
  • DATACOPY 계산 명령을 사용하여 필요한 블록을 생성한 다음 계산합니다. DATACOPY로 기존 블록 복사를 참조하십시오.

  • 밀집 멤버 방정식을 포함하는 멤버 공식을 사용합니다.

    FIX(Sales, Expenses)
    Budget (Sales = Sales -> Actual * 1.1;
    Expenses = Expenses -> Actual * .95;)
    ENDFIX

공식 실행 레벨 관리

CALCLIMITFORMULARECURSION을 구성하여 순환 Essbase 공식의 과도한 루핑을 방지할 수 있습니다.

블록 저장 영역 아웃라인의 공식은 하나 이상의 블록 내에서 중첩된 공식 실행이 발생하도록 서로 종속될 수 있습니다. 이러한 공식을 순환 공식이라고 합니다. 반복 공식으로 인해 서버가 비정상적으로 종료되는 루프가 크거나 끝이 없는 경우가 있습니다.

비정상 종료를 방지하려면 CALCLIMITFORMULARECURSION 구성 설정을 사용하여 기본 실행 레벨 수를 초과하는 공식 실행을 중지할 수 있습니다.