데이터 블록의 지능형 계산

Essbase Intelligent Calculation에서 밀집 및 희소 계산, 동시 계산 및 다중 패스 계산을 처리하는 방법을 알아봅니다.

조합에 대해 하나 이상의 데이터 값이 있는 경우 Essbase는 희소 차원 멤버의 고유한 각 조합에 대해 데이터 블록을 생성합니다. 각 데이터 블록은 희소 차원 멤버의 고유한 조합에 대한 모든 밀집 차원 멤버 값을 나타냅니다.

예를 들어, Sample Basic 데이터베이스에서 Market 및 Product 차원은 희소합니다. 따라서 데이터 블록 New York -> Colas는 희소 조합 New York -> Colas에 대한 Year, Measures 및 Scenario 차원의 모든 멤버 값을 나타냅니다.

다음 섹션에서는 데이터 블록의 데이터 저장 영역에 설명된 대로 상위 레벨, 레벨 0 및 입력 데이터 블록의 개념을 잘 알고 있다고 가정합니다.

밀집 차원의 지능형 계산

밀집 차원을 계산하고 FIX 명령을 사용하지 않는 경우 Essbase는 데이터베이스의 모든 데이터 블록에 있는 데이터 값 중 적어도 일부를 계산합니다. 지능형 계산 상태와 관련하여 블록은 밀집 계산에서 클린으로 표시됩니다.

예를 들어, 다음 계산 스크립트는 밀집인 연도 차원을 계산합니다.

SET CLEARUPDATESTATUS AFTER;
CALC DIM(Year);

Year는 조밀하므로 큐브의 모든 블록에는 Year 멤버가 포함됩니다. 따라서 Essbase는 모든 블록을 계산합니다.

그런 다음 스크립트에서 SET CLEARUPDATESTATUS AFTER 명령을 사용하기 때문에 Essbase는 큐브의 모든 데이터 블록을 클린으로 표시합니다.

희소 차원의 지능형 계산

희소 차원을 계산할 때 Essbase는 데이터베이스의 모든 데이터 블록을 계산하지 않아도 됩니다. Intelligent Calculation의 클린/더티 업데이트 상태가 레벨 0 및 상위 레벨 블록의 상태에 영향을 줄 수 있는 방법 및 불필요한 계산을 방지하는 방법을 알아봅니다.

예를 들어, 다음 계산 스크립트는 Sample Basic 데이터베이스를 기반으로 합니다.

SET CLEARUPDATESTATUS AFTER;
CALC DIM(Product);

이 스크립트는 희소 차원인 Product 차원을 계산합니다. Product는 희소하므로 Product 차원의 각 멤버에 대해 데이터 블록이 있습니다. 예를 들어, New York -> Colas에 대해 하나의 데이터 블록이 있고 New York -> 100-10에 대해 다른 데이터 블록이 있습니다.

레벨 0 효과

레벨 0에서 큐브로 데이터를 로드하면 영향을 받는 블록이 더티로 표시됩니다. 이후에 희소 차원만 계산하는 경우 레벨 0 블록은 계산되지 않고 더티 상태로 유지됩니다. 희소 차원 또는 차원만 재계산하는 경우 Essbase는 상위 레벨 데이터 블록을 재계산합니다.

주:

Essbase는 해당 희소 레벨 0 멤버에 적용된 공식이 있는 경우 레벨 0 데이터 블록을 계산합니다.

데이터 블록 New York -> 100-10은 레벨 0 블록이며 희소 차원(시장 또는 제품)의 상위 멤버를 나타내지 않습니다. New York -> 100-10의 데이터 값은 입력 값이며 데이터베이스에 로드됩니다. 따라서 Essbase는 이 데이터 블록을 계산할 필요가 없습니다. 스크립트에서 SET CLEARUPDATESTATUS AFTER 명령을 사용하더라도 Essbase는 New York -> 100-10에 대한 데이터 블록을 클린으로 표시하지 않습니다.

상위 레벨 효과

Essbase는 희소 차원을 계산할 때 블록이 하나 이상의 더티 하위 블록에 종속된 경우 상위 레벨 데이터 블록을 재계산합니다.

Colas는 Product 차원의 상위 레벨 멤버입니다. Essbase는 콜라 값을 계산해야 하므로 Essbase는 이 데이터 블록을 계산합니다. 이 스크립트는 SET CLEARUPDATESTATUS AFTER 명령을 사용하기 때문에 Essbase는 데이터 블록을 클린으로 표시합니다.

불필요한 계산

하나 이상의 밀집 차원을 계산하여 불필요한 계산을 피할 수 있습니다. FIX 명령을 사용하지 않고 밀집 치수를 계산하는 경우 레벨 0 블록을 포함하여 모든 블록에서 데이터 값이 계산됩니다. 따라서 레벨 0 블록은 clean으로 표시됩니다.

지능형 계산 및 동시작업 계산

지능형 계산이 사용으로 설정된 경우 동시작업 계산으로 예방 조치를 취합니다. 여러 계산에서 동일한 블록을 계산하려고 시도할 경우 Essbase는 이미 클린으로 표시되어 있으므로 데이터 블록을 재계산하지 않을 수 있습니다.

다음 예제에서 Sample Basic 데이터베이스를 기반으로 하는 Actual 및 Budget은 밀집 시나리오 차원의 멤버입니다. 시나리오가 조밀하므로 데이터베이스의 각 블록에 실제 및 예산 값이 포함됩니다. 사용자 1이 다음 계산 스크립트를 실행하는 경우 Essbase는 뉴욕을 나타내는 모든 데이터 블록에 대한 실제 값을 계산합니다.

SET CLEARUPDATESTATUS AFTER;
FIX("New York", Actual)
   CALC DIM(Product, Year);
ENDFIX

Essbase는 계산된 데이터 블록을 클린으로 표시하지만 계산된 각 블록의 모든 값이 계산되지는 않았습니다. 예를 들어, 예산 값이 계산되지 않았습니다.

사용자 2가 뉴욕의 예산 값을 계산하기 위해 다음 계산 스크립트를 실행하는 경우 Essbase는 이미 클린으로 표시되어 있으므로 지정된 블록을 재계산하지 않습니다. 예산에 대한 계산 결과가 정확하지 않습니다.

SET CLEARUPDATESTATUS AFTER;
FIX("New York", Budget)
   CALC DIM(Product, Year);
ENDFIX

이 문제를 해결하는 한 가지 방법은 시나리오 차원을 희소하게 만드는 것입니다. 그런 다음 실제 및 예산 값은 서로 다른 블록에 있습니다(예: 뉴욕 -> 콜라스 -> 실제 및 뉴욕 -> 콜라스 -> 예산). 이 경우 두 번째 계산 스크립트가 예산 블록을 올바르게 계산합니다.

동시 계산을 실행하려면 데이터 캐시를 늘려야 합니다.

지능형 계산 및 다중 통과 계산

여러 패스가 필요한 Essbase 계산 스크립트는 경우에 따라 Intelligent Calculation 사용과 호환되지 않을 수 있습니다.

Essbase는 데이터베이스를 통과하는 첫 번째 계산에서 데이터 블록을 계산할 때 데이터 블록을 클린으로 표시합니다. Intelligent Calculation이 사용으로 설정된 후속 패스에서 동일한 데이터 블록을 계산하려고 하면 Essbase는 이미 클린으로 표시되어 있으므로 데이터 블록을 재계산하지 않습니다.

가능하면 Essbase는 데이터베이스를 통과하는 하나의 계산으로 데이터베이스를 계산합니다.

계산 스크립트를 사용하여 데이터베이스를 계산하는 경우 Essbase가 수행하는 계산 패스 수는 계산 스크립트에 따라 다릅니다.

예를 들어, Essbase가 첫 번째 계산 패스에서 블록을 계산하여 클린으로 표시한다고 가정합니다. Intelligent Calculation이 사용으로 설정된 동안 후속 패스에서 동일한 블록을 계산하려고 시도하면 Essbase는 이미 클린으로 표시되어 있으므로 데이터 블록을 재계산하지 않습니다.

다중 패스 계산을 위한 예제 및 솔루션

이 예에서는 올바른 결과를 얻기 위한 솔루션과 함께 잘못된 Essbase 계산 결과를 생성하는 상황에 대해 설명합니다. 샘플 기본 데이터베이스를 기반으로 하며 지능형 계산이 설정되어 있다고 가정합니다.

예 1: 지능형 계산 및 2단계

다음 계산 스크립트는 기본 계산을 수행한 다음 두 패스 계산을 수행합니다.

CALC ALL;
CALC TWOPASS;

오류

Essbase는 데이터베이스의 더티 데이터 블록을 계산하고 모든 데이터 블록을 클린으로 표시합니다. 그러면 Essbase는 계정으로 태그 지정된 차원에서 2단계로 태그 지정된 멤버를 재계산해야 합니다. 그러나 Essbase는 이미 클린으로 표시되어 있으므로 지정된 데이터 블록을 재계산하지 않습니다. 계산 결과가 정확하지 않습니다.

해결책

2단계 계산에 대해 지능형 계산을 사용 안함으로 설정하여 올바른 결과를 계산할 수 있습니다.

예제 2: SET CLEARUPDATESTATUS 및 FIX

이 계산 스크립트는 뉴욕에 대한 데이터 값을 계산합니다. 계산은 Product 차원을 기반으로 합니다.

SET CLEARUPDATESTATUS AFTER;
FIX("New York")
   CALC DIM(Product);
ENDFIX
CALC TWOPASS;

오류

Essbase는 다음 프로세스를 수행합니다.

  1. Essbase는 뉴욕을 나타내는 더티 데이터 블록을 계산하는 데이터베이스를 순환합니다. 계산은 Product 차원을 기반으로 합니다. 따라서 Essbase는 제품 차원의 상위 멤버를 나타내는 블록(예: 뉴욕 -> 콜라, 뉴욕 -> 루트 맥주 및 뉴욕 -> 과일 소다)만 계산한 다음 제품 차원의 집계 및 공식만 계산합니다.

  2. SET CLEARUPDATESTATUS AFTER 명령이 사용되므로 Essbase는 계산된 데이터 블록을 클린으로 표시하지만 계산된 각 블록의 모든 데이터 값이 계산되지는 않았습니다.

  3. Essbase는 계정으로 태그 지정된 차원에서 두 패스로 태그 지정된 멤버를 재계산해야 하지만 이러한 데이터 블록 중 일부는 이전 단계의 계산에서 클린으로 이미 표시되어 있습니다. Essbase는 클린으로 표시된 데이터 블록을 재계산하지 않습니다. 계산 결과가 정확하지 않습니다.

해결책

2단계 계산에 대해 지능형 계산을 사용 안함으로 설정하여 올바른 결과를 계산할 수 있습니다.

예제 3: SET CLEARUPDATESTATUS 및 2개의 CALC DIM 명령

이 계산 스크립트는 제품 및 연도 차원에 대한 데이터베이스 계산을 기반으로 합니다. 두 개의 CALC DIM 명령이 사용되므로 Essbase는 데이터베이스를 통과하는 두 개의 계산 패스를 수행합니다.

SET CLEARUPDATESTATUS AFTER;
CALC DIM(Product);
CALC DIM(Year);

오류

Essbase는 다음 프로세스를 수행합니다.

  1. Essbase는 더티 데이터 블록을 계산하는 데이터베이스를 순환합니다. 계산은 Example 2와 같이 Product 차원을 기반으로 합니다.

  2. SET CLEARUPDATESTATUS AFTER 명령이 사용되므로 Essbase는 계산된 데이터 블록을 클린으로 표시하지만 계산된 각 블록의 모든 데이터 값이 계산되지는 않았습니다.

  3. Essbase는 데이터 블록을 재계산해야 합니다. 재계산은 연도 차원을 기반으로 합니다. 그러나 이전 단계의 계산으로 인해 일부 데이터 블록은 이미 클린으로 표시되었으며 Essbase는 이를 재계산하지 않습니다. 계산 결과가 정확하지 않습니다.

해결책

하나의 CALC DIM 명령을 사용하여 제품 및 연도 차원을 계산하여 올바른 결과를 계산할 수 있습니다. Essbase는 데이터베이스를 통과하는 한 계산 패스의 두 차원을 모두 계산합니다.

다음 계산 스크립트는 올바른 결과를 계산합니다.

SET CLEARUPDATESTATUS AFTER;
CALC DIM(Product, Year);

주:

하나의 CALC DIM 명령으로 여러 차원을 계산하는 경우 Essbase는 기본 계산 순서로 차원을 계산하고 명령에서 차원을 나열하는 순서로 계산하지 않습니다. 멤버 계산 순서를 참조하십시오.

예제 4: 두 개의 계산 스크립트

이 예에서는 뉴욕의 데이터 값을 계산하지만 두 계산 스크립트를 사용하여 두 차원을 기준으로 계산합니다. 첫번째 계산 스크립트는 Product 차원을 계산합니다.

SET CLEARUPDATESTATUS AFTER;
FIX("New York")
   CALC DIM(Product);
ENDFIX

Essbase는 뉴욕을 포함하는 데이터 블록을 계산합니다. 계산은 제품 차원을 기반으로 하므로 Essbase는 제품 차원에 상위 멤버가 포함된 더티 블록(예: 뉴욕 -> 콜라, 뉴욕 -> 루트 맥주 및 뉴욕 -> 과일 소다)만 계산하고 제품 차원에 대한 집계 및 공식만 계산합니다.

CLEARUPDATESTATUS AFTER 명령 때문에 Essbase는 계산된 데이터 블록을 클린으로 표시하지만 계산된 각 블록의 모든 데이터 값이 계산되지는 않았습니다.

두번째 계산 스크립트는 Year 차원을 계산합니다.

SET CLEARUPDATESTATUS AFTER;
FIX("New York")
   CALC DIM(Year);
ENDFIX

Essbase는 뉴욕을 나타내는 데이터 블록을 계산합니다. 계산은 밀집 차원인 연도 차원을 기반으로 하므로 Essbase는 각 블록 Essbase 내에서 연도 차원에 대한 집계 및 공식만 계산하지만 뉴욕을 포함하는 모든 데이터 블록을 계산해야 합니다.

오류

첫 번째 계산의 결과로 뉴욕의 일부 데이터 블록은 이미 클린으로 표시되어 있습니다. 데이터 블록이 클린으로 표시되어 있으므로 Essbase는 두 번째 계산 스크립트로 이러한 데이터 블록을 재계산하지 않습니다. 계산 결과가 정확하지 않습니다.

해결책

계산된 데이터 블록을 클린으로 표시하지 않도록 Essbase에 지시하여 올바른 결과를 계산할 수 있습니다. 다음 계산 스크립트는 올바른 결과를 계산합니다.

SET CLEARUPDATESTATUS OFF;
FIX("New York")
   CALC DIM(Product);
ENDFIX
SET CLEARUPDATESTATUS AFTER;
FIX("New York")
   CALC DIM(Year);
ENDFIX

Essbase는 SET CLEARUPDATESTATUS OFF 명령을 사용하여 더티 데이터 블록을 계산하지만 SET CLEARUPDATESTATUS AFTER 명령과 달리 클린으로 표시하지 않습니다.

이 솔루션은 데이터 블록이 데이터베이스의 이전 부분 계산에서 클린으로 표시되지 않는다고 가정합니다.

지능형 계산을 사용 안함으로 설정하여 상태와 관계없이 모든 데이터 블록이 계산되도록 할 수 있습니다. 다음 계산 스크립트는 클린 또는 더티 상태에 관계없이 지정된 모든 데이터 블록을 계산합니다.

SET UPDATECALC OFF;
FIX("New York")
   CALC DIM(Year, Product);
ENDFIX

SET CLEARUPDATESTATUS AFTER 명령을 사용하지 않았기 때문에 Essbase는 계산된 데이터 블록을 클린으로 표시하지 않습니다.