Essbase에서 실행되는 계산 스크립트의 런타임 대체 변수

런타임 대체 변수(RTSV)를 사용하면 멤버 이름을 하드 코딩하는 대신 Essbase 계산 스크립트에서 동적으로 참조할 수 있습니다. 대체 변수가 허용되는 경우 계산 스크립트에 런타임 대체 변수를 포함할 수 있습니다.

계산 스크립트에서 앰퍼샌드(&)는 런타임 치환 변수 이름 앞에 와야 합니다.

계산 스크립트에 사용되는 모든 런타임 대체 변수는 SET RUNTIMESUBVARS 계산 명령에서 이름 및 기본값으로 선언되어야 합니다.

주:

SET RUNTIMESUBVARS의 런타임 대체 변수 선언에 기본값이 포함되지 않은 경우 계산 스크립트가 검증될 때 오류가 발생합니다. Oracle은 검증 오류를 방지하고 계산 스크립트를 실행할 때 예상 값을 제공하기 위해 기본값을 제공할 것을 권장합니다. 그러나 기본값을 제공하지 않을 경우에도 execute calculation MaxL 문을 with runtimesubvars 문법과 함께 사용하여 런타임 시 값을 제공할 수 있습니다.

런타임 대체 변수의 데이터 유형 및 데이터 입력 제한에 대한 설명은 <RTSV_HINT>rtsv_description</RTSV_HINT> 태그의 문자열입니다. 런타임 대체 변수가 있는 계산 스크립트가 Essbase에서 실행되는 경우 이 태그는 선택 사항입니다. Essbase에서 실행되는 계산 스크립트의 런타임 대체 변수에 대한 힌트를 참조하십시오. 런타임 대체 변수가 있는 계산 스크립트가 Smart View에서 실행되는 경우 추가 메타데이터가 포함된 <RTSV_HINT> 태그가 필요합니다. Smart View의 계산 스크립트 실행에서 런타임 대체 변수를 참조하십시오.

이 SET RUNTIMESUBVARS 예제에서는 세 개의 런타임 치환 변수 myMarket, salesNum 및 pointD가 선언됩니다. 기본값은 각 런타임 대체 변수에 대해 지정됩니다. 예를 들어, myMarket의 값은 "New York"입니다. 이 예는 Essbase에서 실행되는 계산 스크립트에 적용됩니다.

SET RUNTIMESUBVARS
{
   myMarket = "New York";
   salesNum = 10;
   pointD = "Actual"->"Final";
};

런타임 시 SET RUNTIMESUBVARS 명령에 지정된 기본값을 다음 방법 중 하나를 사용하여 겹쳐쓸 수 있습니다.

  • 런타임 대체 변수가 키/값 쌍의 문자열로 지정되는 with runtimesubvars 문법을 사용하여 계산 MaxL 문을 실행합니다.

    위의 SET RUNTIMESUBVARS 예제를 사용하여 런타임 시 다음 MaxL 문을 사용하여 salesNum 기본값 10을 500으로 겹쳐쓸 수 있습니다.

    execute calculation appname.dbname.calcScriptName with runtimesubvars 'salesNum=500';

    또한 이 MaxL 문을 사용하면 SET RUNTIMESUBVARS 선언에서 기본값이 없는 런타임 대체 변수에 대한 값을 제공할 수 있습니다.

  • 런타임 대체 변수가 키/값 쌍의 문자열로 지정된 API 호출: IEssCube.calcFileWithRunTimeSubVars(Java API) 또는 EssCalcWithRuntimeSubVars(C API)

  • 런타임 대체 변수를 클라이언트 컴퓨터의 텍스트 파일에 지정하거나 키/값 쌍의 문자열로 지정할 수 있는 API 호출: IEssCube.calcFileWithRunTimeSubVarFile(Java API) 또는 EssCalcFileWithRuntimeSubVars(C API)

런타임 대체 변수를 키/값 쌍의 문자열로 지정하는 경우 문자열은 작은 따옴표로 묶어야 하고 키/값 쌍은 세미콜론으로 구분해야 합니다. 세미콜론은 문자열에서 마지막 런타임 대체 변수 뒤의 세미콜론과 터미널 작은 따옴표 앞의 세미콜론을 포함합니다. 런타임 대체 변수 문자열의 이 예에서 네 개의 런타임 대체 변수의 이름과 값이 지정됩니다. 예를 들어, "a"라는 런타임 대체 변수의 값은 100입니다.

'a=100;b=@CHILDREN("100");c="Actual"->"Final";d="New York";'

텍스트 파일에 런타임 대체 변수를 지정하는 경우 클라이언트 컴퓨터에 .rsv 확장자가 있는 텍스트 파일을 생성합니다. EssbaseEssbase 서버 컴퓨터에 있는 런타임 대체 변수 파일을 지원하지 않습니다. 파일의 각 행은 하나의 런타임 대체 변수를 키/값 쌍으로 지정하며 세미콜론으로 끝나야 합니다. 이 .rsv 파일 예에서는 네 개의 런타임 대체 변수의 이름과 값이 지정됩니다.

a=100;
b=200;
c=@CHILDREN("100");
d=@TODATE("DD/MM/YY","10/11/12");

계산이 실행되면 런타임 대체 변수 값이 다음 순서로 결정됩니다.

  1. 실행 계산 MaxL 문을 통해 runtimesubvars 문법 또는 API(IEssCube.calcFileWithRunTimeSubVars 또는 IEssCube.calcFileWithRunTimeSubVarFile Java API, EssCalcWithRuntimeSubVars 또는 EssCalcFileWithRuntimeSubVars C API)로 지정된 값입니다.

  2. SET RUNTIMESUBVARS 계산 명령에 지정된 기본값입니다.

런타임 대체 변수를 사용할 때는 다음 지침을 고려하십시오.

  • SET RUNTIMESUBVARS에서 런타임 대체 변수를 선언하지만 계산 스크립트에 런타임 대체 변수를 사용하지 않는 경우 Essbase는 사용되지 않은 런타임 대체 변수 선언을 무시합니다(경고 또는 예외가 생성되지 않음).

  • 런타임 대체 변수는 대체 변수보다 우선 순위가 높습니다. 따라서 치환 변수와 런타임 치환 변수의 이름이 동일한 경우(예: myProduct) 런타임 치환 변수의 값이 치환 변수의 값을 덮어씁니다.

  • 여러 런타임 대체 변수의 이름이 동일하지만 값이 다른 경우 런타임 대체 변수의 첫번째 인스턴스 값만 사용되며 다른 모든 후속 값은 무시됩니다.

런타임 대체 변수에 대한 이름과 값을 설정하는 규칙은 대체 변수에 대한 규칙과 동일합니다. 허용된 대체 변수 이름 및 값을 참조하십시오.

Essbase에서 실행되는 계산 스크립트의 런타임 대체 변수에 대한 힌트

런타임 대체 변수를 사용하는 Essbase 계산 스크립트를 설계할 때 RTSV_HINT를 사용하여 사용자에게 런타임 시 값을 입력하라는 메시지를 표시하는 텍스트를 포함할 수 있습니다.

이 항목의 정보는 Smart View가 아닌 Essbase 작업 또는 API에서 런타임 대체 변수가 있는 계산 스크립트를 실행하는 데 적용됩니다.

SET RUNTIMESUBVARS 계산 명령에서 런타임 대체 변수 선언에는 <RTSV_HINT>rtsv_description</RTSV_HINT> 태그가 포함될 수 있습니다. 여기서 rtsv_description는 런타임 대체 변수에 대한 데이터 유형 및 데이터 입력 제한(예: 100보다 크지 않은 정수)을 설명하는 문자열입니다. rtsv_description 문자열은 계산에 사용되지 않지만 사용자 프롬프트로 유용할 수 있습니다.

API 호출은 SET RUNTIMESUBVARS의 런타임 치환 변수 선언에 지정된 모든 정보(이름, 기본값 및 설명)를 검색할 수 있습니다. 예를 들어, REST API Essbase 스크립트 RTSV 가져오기 엔드포인트, IEssIterator.getCalcFileRunTimeSubVars 또는 IEssIterator.getCalcRunTimeSubVars Java API 메소드 또는 EssGetRuntimeSubVars C API를 사용하여 이 정보를 반환할 수 있습니다. 그런 다음 rtsv_description 문자열을 사용하여 사용자에게 런타임 시 값을 입력하라는 메시지를 표시하거나 값을 계산 스크립트에 전달하기 전에 입력 데이터를 검증할 수 있습니다.

이 SET RUNTIMESUBVARS 예제에서 각 선언은 런타임 치환 변수의 이름, 기본값 및 설명을 지정합니다.

SET RUNTIMESUBVARS
{
   myMarket = "New York" <RTSV_HINT>myMarket: Input the value as a member name, such as "New York"</RTSV_HINT>;
   salesNum = 10 <RTSV_HINT>salesNum: Input the value as an integer, such as 100</RTSV_HINT>;
   pointD = "Actual"->"Final" <RTSV_HINT>pointD: Input the value as a member combination, such as "Actual"->"Final"</RTSVVAR_HINT>;
};

로그 런타임 대체 변수

계산 스크립트에 사용되는 런타임 대체 변수를 기록하려면 ENABLERTSVLOGGING 구성 설정을 TRUE로 설정합니다. 로깅은 Essbase 서버, 애플리케이션 또는 데이터베이스 레벨에서 구현할 수 있습니다.

런타임 대체 변수 로그 항목은 응용 프로그램 로그 파일에 기록됩니다. Essbase는 키/값 쌍의 각 문자열(또는 IEssCube.calcFileWithRunTimeSubVarFile Java API 또는 EssCalcFileWithRuntimeSubVars C API를 사용할 때 .rsv 파일에 지정된 키/값 쌍 목록)에 대해 애플리케이션 로그에 한 항목을 씁니다.

다음 예에서는 두 개의 런타임 대체 변수(엔티티 및 통화)와 해당 값이 한 항목에 기록됩니다.

Executing calc script 'calcprofit.csc' with runtime substitution variables {Entity = "MyCompany"; Currency = "USD";}

참조 항목

ENABLERTS블로그