구성 가능 계산(삽입 지점) 규칙을 배포한 후 성능 이슈 진단

구성 가능 계산을 사용하여 미리 정의된 연결 프로세스에서 제공하지 않는 사용 사례를 구현할 수 있습니다.

  • 다중 통화 애플리케이션: 현지 통화(환산안된 엔티티 레벨 데이터), 환산(환산된 엔티티 레벨 데이터), 연결 데이터 처리에 사용되는 구성 가능 계산을 작성할 수 있습니다.
  • 단일 통화 애플리케이션: 현지 통화(환산안된 엔티티 레벨 데이터) 및 연결 데이터 처리에 사용되는 구성 가능 계산을 작성할 수 있습니다.

연결 프로세스가 실행될 때 Financial Consolidation and Close에서 호출하는 이러한 계산은 독립형 계산으로 호출할 수 없습니다. 잘못 작성된 구성 가능 계산은 연결 프로세스의 런타임 성능에 심각한 영향을 미칠 수 있습니다. Financial Consolidation and Close권장사항 카드에는 통합 중에 성능을 저하시킬 수 있는 규칙에 대한 경고가 표시됩니다. 구성 가능 계산 스크립트를 작성하는 동안 따라야 하는 모범 사례를 알려주는 이러한 경고는 잠재적으로 통합 성능을 높일 수 있습니다. 자세한 내용은 Financial Consolidation and Close 관리에서 계산 스크립트 검증 경고 해결를 참조하십시오.

또한 구성 가능 계산의 성능을 높이려면 다음 제안을 사용하십시오.

  • 현지 통화 구성 가능 계산을 주문형 규칙으로 실행
  • CALC DIM 논리 사용 안함
  • HYBRIDBSOINCALCSCRIPT 설정
  • 상향식으로 구성 가능 계산 실행
  • 블록 모드 계산 사용
  • 표현식 오른쪽의 총 멤버 고려

현지 통화 구성 가능 계산을 주문형 규칙으로 실행

현지 통화에 대해 작성된 구성 가능 계산은 통화 및 연결 차원의 엔티티 통화 및 엔티티 입력 멤버에 대해 각각 실행됩니다. 일부를 변경하여 현지 통화 구성 가능 계산을 주문형 규칙(ODR)으로 작성할 수 있습니다. 이 방법의 이점은 다음과 같습니다.

  • 연결 시간을 줄입니다.

    사용자가 이전 기간(잠긴) 값을 엔티티 통화 및 엔티티 입력 레벨의 현재 기간으로 복사하는 데 5분 정도 걸린다고 가정합니다. 이전 기간 값이 변경될 가능성이 없으므로 이 태스크는 한 번만 수행되어야 합니다. 현지 통화 구성 가능 계산에 이 계산을 포함하면 연결이 호출될 때마다 연결 시간이 증가되어 계산이 실행됩니다. ODR 같은 계산을 이동하면 필요할 때 호출하여 시간을 절약할 수 있습니다. 이 시나리오에서는 이전 기간 데이터를 복사하지 않도록 하여 기간당 5분의 연결 시간을 절약합니다.

  • 현지 통화 구성 가능 계산을 디버깅하는 데 도움이 됩니다.

    모든 연결 중 현지 통화 및 엔티티 입력 레벨에서 계산 논리를 실행해야 하는 사용 사례를 고려해 보십시오. 이러한 규칙은 현지 통화 구성 가능 계산의 일부여야 하므로 규칙에 대한 성능 이슈를 디버깅하려고 시도할 때마다 많은 시간이 걸리는 프로세스인 연결을 실행해야 합니다. 시간이 절약되도록 현지 통화 구성 가능 계산을 ODR로 이동하여 계산을 디버깅 및 미세 조정한 후 현지 통화 구성 가능 계산으로 다시 이동할 수 있습니다.

  • 쉬운 런타임 액세스 및 통계를 제공합니다.

    ODR은 Financial Consolidation and Close 규칙 카드에서 호출하거나 Calculation Manager에서 직접 호출할 수 있습니다. Calculation Manager에서 실행되는 ODR은 처리 시간이 걸리는 위치 및 계산이 실행되는 멤버를 확인하는 데 도움이 되는 통계를 생성합니다. 런타임 통계를 수집하려면 다음 단계를 따릅니다.

    1. Calculation Manager에 액세스하여 ODR을 실행합니다.
      Calculation Manager에서 실행되는 주문형 규칙

    2. 런타임 프롬프트를 선택합니다.
    3. 실행 상태에서 확인을 누릅니다.

      로그 메시지 탭이 표시됩니다. 이 탭은 런타임 통계를 보여 줍니다.

구성 가능 계산을 ODR로 이동

현지 통화에 대한 구성 가능 계산이 작성된 경우 FIX에서 시나리오, 연도, 기간, 엔티티 차원의 멤버를 앵커로 또는 표현식의 왼쪽에 사용할 수 없습니다. 통화 및 연결 차원의 멤버만 사용할 수 있습니다. 연결 프로세스 중 현지 통화 규칙이 호출되면 연결 프로세스에 RTP(런타임 프롬프트)로 제공된 시나리오, 연도, 기간, 엔티티 차원의 멤버가 고려됩니다.

ODR에 시나리오, 연도, 기간, 엔티티, 통화, 연결 차원 멤버를 사용할 수 없습니다. 관련 차원 멤버는 ODR 실행을 시작하는 RTP로 제공됩니다.

CALC DIM 논리 사용 안함

삽입 지점에 대해 구성 가능한 계산 스크립트를 생성하는 경우 Financial Consolidation and Close는 자동으로 상위 레벨에서 데이터를 생성하므로 다음 삽입 지점에서 해당 상위 멤버를 사용할 수 있습니다. Financial Consolidation and Close는 사용자가 채우는 데이터를 롤업하는 CALC DIM 논리를 추가합니다. 추가된 이 CALC DIM 논리를 처리하는 작업은 계층의 복잡성에 따라 시간이 많이 걸리는 프로세스입니다. 나중에 삽입 지점에서 다시 계산된 상위 멤버를 참조할 필요가 없는 경우 Financial Consolidation and Close가 삽입 지점에 대해 추가하는 CALC DIM 논리를 사용 안함으로 설정하여 전반적인 연결 프로세스 속도를 높일 수 있습니다.

Note:

CALC DIM 논리를 사용 안함으로 설정하면 연결 스크립트 생성에 영향을 줍니다. CALC DIM 논리를 사용 안함으로 설정한 후에는 연결 결과를 주의해서 확인하십시오.

복수 통화 애플리케이션에서 Financial Consolidation and Close가 불필요한 CALC DIM 논리를 생성하지 않도록 방지하려면 다음 목록에서 적절한 대체 변수를 정의하고 True로 설정합니다.

  • CONFCALC_FCCS10_DISABLECALCDIM
  • CONFCALC_FCCS20_DISABLECALCDIM
  • CONFCALC_FCCS25_DISABLECALCDIM
  • CONFCALC_FCCS30_DISABLECALCDIM
  • CONFCALC_FCCS40_DISABLECALCDIM
  • CONFCALC_FCCS50_DISABLECALCDIM
  • CONFCALC_FCCS60_DISABLECALCDIM
  • CONFCALC_FCCS70_DISABLECALCDIM

예를 들어 구성 가능한 계산 규칙 FCCS_10 및 FCCS_20에 사용자정의 논리를 작성했다고 가정해 보겠습니다. CALC DIM 논리를 FCCS_20에 대해서는 사용 안함으로 설정하지만 FCCS_10에 대해서는 사용 안함으로 설정하지 않으려면 CONFCALC_FCCS20_DISABLECALCDIM이라는 대체 변수를 정의하고 True로 설정해야 합니다.

단일 통화 애플리케이션에서 Financial Consolidation and Close가 불필요한 CALC DIM 논리를 생성하지 않도록 방지하려면 다음 목록에서 적절한 대체 변수를 정의하고 True로 설정합니다.

  • CONFCALC_FCCS110_DISABLECALCDIM
  • CONFCALC_FCCS120_DISABLECALCDIM
  • CONFCALC_FCCS130_DISABLECALCDIM
  • CONFCALC_FCCS140_DISABLECALCDIM
  • CONFCALC_FCCS150_DISABLECALCDIM

SET HYBRIDBSOINCALCSCRIPT

SET HYBRIDBSOINCALCSCRIPT 명령은 계산 스크립트의 특정 블록을 하이브리드 모드에서 실행할지 여부를 제어합니다.

현지 통화, 기초 잔액 차기 이월 후 규칙의 다음 구성 가능 계산 스크립트를 고려하십시오.

FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX
연결 시작 시 구성 가능 계산의 경우 Financial Consolidation and Close에서 SET HYBRIDBSOINCALCSCRIPT FULL;SET HYBRIDBSOINCALCSCRIPT NONE; 명령으로 규칙을 캡슐화하여 하이브리드 모드를 사용할 수 있습니다. 이러한 명령은 Calculation Manager에 표시되지 않습니다. 이러한 명령은 ODR에 추가되지 않습니다.
SET HYBRIDBSOINCALCSCRIPT FULL;
FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX

SET HYBRIDBSOINCALCSCRIPT NONE;

구성 가능 계산에 대한 연결 중 하이브리드 모드 전환으로 성능이 저하되지 않도록 하려면 하이브리드 모드를 해제(다음 샘플 참조)한 후 연결을 실행하십시오.

SET HYBRIDBSOINCALCSCRIPT FULL;

SET HYBRIDBSOINCALCSCRIPT NONE;
FIX("Entity Currency", "Entity Input") 
        FIX("Data Input", "No Intercompany", "Local GAAP", "No Intercompany", "No Products")
                 "Changes In Cash"(
                         "Cash" = "Bank" -> "Total Product";
                   )
        ENDFIX
ENDFIX

SET HYBRIDBSOINCALCSCRIPT NONE;

상향식으로 구성 가능 계산 실행

하향식으로 구성 가능 계산을 실행하면 속도가 느려질 수 있습니다. 결과적으로 계산을 호출하는 연결 프로세스도 속도가 느려집니다. 이 이슈를 방지하려면 상향식으로 구성 가능 계산을 실행해야 합니다. 자세한 정보는 에서 @CALCMODE를 참조하십시오Essbase Technical Reference

상향식 계산으로 전환하는 경우 대상 블록이 존재하고 데이터가 제대로 계산되는지 확인하십시오.

블록 모드 계산 사용

셀 모드 계산은 구성 가능 계산 속도를 느리게 할 수 있으므로 블록 모드에서 계산이 실행되도록 해야 합니다. 자세한 정보는 에서 @CALCMODE를 참조하십시오Essbase Technical Reference

블록 모드 계산으로 전환하는 경우 결과 데이터가 정확하도록 하려면 블록 내 데이터 종속성을 신중하게 고려해야 합니다.

표현식 오른쪽의 멤버 수 고려

다음 예에서와 같이 집계된 데이터를 멤버 수로 추출해야 하는 경우도 있습니다.

"Target_Account_Stored" -> "Mvmt_None" = "FCCS_Mvmts_Subtotal"
 -> "Source_Account_DynamicCalc" -> "Total Custom1" -> "Total Custom2";

이 예에서는 오른쪽의 동적 계산 결과를 저장된 밀집 멤버에 저장하려고 합니다. Financial Consolidation and Close는 기본적으로 SET HYBRIDBSOINCALCSCRIPT FULL;SET HYBRIDBSOINCALCSCRIPT NONE; 명령 내에서 이 구성 가능 계산을 캡슐화합니다. 하지만 캡슐화 이후에도 이 계산은 최상위 멤버에서 읽기 때문에 계산이 잘 수행되지 않을 수 있습니다. 성능이 향상되도록 다음 예에 설명된 대로 최상위 멤버에서 읽는 대신 필요한 차원의 레벨 0 멤버에서 반복하도록 해당 계산을 다시 작성할 수 있습니다.

SET HYBRIDBSOINCALCSCRIPT NONE; /*Turn off hybrid mode */
FIX(@RELATIVE( "Total Custom1", 0 ), @RELATIVE( "Total Custom2", 0 ), <other dimension members of FIX> )
       "FCCS_Mvmts_Subtotal" ( @CALCMODE( BOTTOMUP );
             "Target_Account_Stored" -> "Mvmt_None"  =  "Target_Account_Stored"  -> "Mvmt_None" + "Source_Account_DynamicCalc";
             )
ENDFIX