Laufzeit-Substitutionsvariablen in Berechnungsskripten werden in Essbase ausgeführt

Mit Laufzeitsubstitutionsvariablen (RTSVs) können Sie Elementnamen in Essbase-Berechnungsskripten dynamisch referenzieren, anstatt sie hartcodieren zu müssen. Eine Laufzeit-Substitutionsvariable kann in einem Berechnungsskript enthalten sein, wenn Substitutionsvariablen zulässig sind.

In einem Berechnungsskript muss vor dem Namen der Laufzeitersetzungsvariablen ein Et-Zeichen (&) stehen.

Jede Laufzeitersetzungsvariable, die in einem Berechnungsskript verwendet wird, muss im Berechnungsbefehl SET RUNTIMESUBVARS mit einem Namen und einem Standardwert deklariert werden.

Hinweis:

Wenn ein Standardwert nicht in der Laufzeitdeklaration der Substitutionsvariablen in SET RUNTIMESUBVARS enthalten ist, tritt bei der Validierung des Berechnungsskripts ein Fehler auf. Oracle empfiehlt, einen Standardwert anzugeben, um den Validierungsfehler zu vermeiden, und bei der Ausführung des Berechnungsskripts den erwarteten Wert anzugeben. Wenn Sie jedoch keinen Standardwert angeben, können Sie zur Laufzeit weiterhin einen Wert mit der execute Calculation-Anweisung MaxL mit der with runtimesubvars-Grammatik angeben.

Eine Beschreibung des Datentyps und der Dateneingabebegrenzung der Laufzeitsubstitutionsvariable ist eine Zeichenfolge im Tag <RTSV_HINT>rtsv_description</RTSV_HINT>. Dieses Tag ist optional, wenn das Berechnungsskript mit Laufzeitsubstitutionsvariablen in Essbase ausgeführt wird. Siehe Hinweise für Laufzeitsubstitutionsvariablen in Berechnungsskripten, die in Essbase ausgeführt werden. Das Tag <RTSV_HINT> mit zusätzlichen Metadaten ist erforderlich, wenn das Berechnungsskript mit Laufzeitsubstitutionsvariablen in Smart View ausgeführt wird. Siehe Laufzeit-Substitutionsvariablen in in Smart View-Berechnungsskripten ausführen.

In diesem Beispiel von SET RUNTIMESUBVARS werden drei Laufzeit-Substitutionsvariablen deklariert: myMarket, salesNum und pointD. Standardwerte werden für jede Laufzeitsubstitutionsvariable angegeben (Beispiel: der Wert von myMarket ist "New York"). Dieses Beispiel gilt für ein Berechnungsskript, das in Essbase ausgeführt wird:

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

Zur Laufzeit können die im Befehl SET RUNTIMESUBVARS angegebenen Standardwerte mit einer der folgenden Methoden überschrieben werden:

  • Berechnungsanweisung ausführen MaxL mit der Grammatik mit runtimesubvars, in der Laufzeitsubstitutionsvariablen als Zeichenfolge von Schlüssel/Wert-Paaren angegeben werden.

    Mit dem obigen Beispiel SET RUNTIMESUBVARS können Sie zur Laufzeit den Standardwert salesNum von 10 mit 500 überschreiben, indem Sie die folgende MaxL-Anweisung verwenden:

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

    Mit dieser MaxL-Anweisung können Sie auch Werte für Laufzeitsubstitutionsvariablen angeben, die keinen Standardwert in der SET RUNTIMESUBVARS-Deklaration haben.

  • Ein API-Aufruf, bei dem Laufzeitsubstitutionsvariablen als Zeichenfolge von Schlüssel/Wert-Paaren angegeben werden: IEssCube.calcFileWithRunTimeSubVars (Java API) oder EssCalcWithRuntimeSubVars (C API)

  • Ein API-Aufruf, bei dem Laufzeit-Substitutionsvariablen in einer Textdatei auf dem Clientcomputer oder als Zeichenfolge von Schlüssel/Wert-Paaren angegeben werden können: IEssCube.calcFileWithRunTimeSubVarFile (Java API) oder EssCalcFileWithRuntimeSubVars (C API)

Wenn Sie Laufzeit-Substitutionsvariablen als Zeichenfolge aus Schlüssel/Wert-Paaren angeben, muss die Zeichenfolge in einfache Anführungszeichen gesetzt werden. Schlüssel/Wert-Paare müssen durch ein Semikolon getrennt werden, einschließlich eines Semikolons nach der letzten Laufzeit-Substitutionsvariablen in der Zeichenfolge und vor dem einfachen Anführungszeichen des Terminals. In diesem Beispiel einer Laufzeit-Substitutionsvariablenzeichenfolge werden Name und Wert von vier Laufzeit-Substitutionsvariablen angegeben (Beispiel: Der Wert der Laufzeit-Substitutionsvariable "a" ist 100):

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

Wenn Sie Laufzeit-Substitutionsvariablen in einer Textdatei angeben, erstellen Sie die Textdatei mit der Erweiterung .rsv auf dem Clientcomputer. (Essbase unterstützt keine Variablendateien zur Laufzeitersetzung, die sich auf dem Essbase Server-Computer befinden.) Jede Zeile in der Datei gibt eine Laufzeit-Substitutionsvariable als Schlüssel/Wert-Paar an und muss mit einem Semikolon enden. In diesem Beispiel einer .rsv-Datei werden Name und Wert von vier Laufzeitsubstitutionsvariablen angegeben:

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

Wenn eine Berechnung ausgeführt wird, werden die Werte der Laufzeitsubstitutionsvariablen in der folgenden Reihenfolge bestimmt:

  1. Werte, die über die MaxL-Anweisung "runtimesubvars" mit der Grammatik with runtimesubvars oder den APIs (IEssCube.calcFileWithRunTimeSubVars oder IEssCube.calcFileWithRunTimeSubVarFile Java APIs; EssCalcWithRuntimeSubVars oder EssCalcFileWithRuntimeSubVars C APIs) angegeben werden.

  2. Standardwerte, die im Berechnungsbefehl SET RUNTIMESUBVARS angegeben werden.

Beachten Sie die folgenden Richtlinien bei der Verwendung von Laufzeitsubstitutionsvariablen:

  • Wenn Sie eine Laufzeit-Substitutionsvariable in SET RUNTIMESUBVARS deklarieren, aber die Laufzeit-Substitutionsvariable nicht im Berechnungsskript verwenden, ignoriert Essbase die nicht verwendete Laufzeit-Substitutionsvariablendeklaration (es wird keine Warnung oder Ausnahme generiert).

  • Laufzeit-Substitutionsvariablen haben eine höhere Priorität als Substitutionsvariablen. Wenn also eine Substitutionsvariable und eine Laufzeit-Substitutionsvariable denselben Namen haben (z.B. myProduct), überschreibt der Wert der Laufzeit-Substitutionsvariable den Wert der Substitutionsvariable.

  • Wenn mehrere Laufzeit-Substitutionsvariablen denselben Namen haben, aber unterschiedliche Werte haben, wird nur der Wert der ersten Instanz der Laufzeit-Substitutionsvariable verwendet. Alle anderen nachfolgenden Werte werden ignoriert.

Die Regeln zum Festlegen von Namen und Werten für Laufzeitsubstitutionsvariablen sind mit den Regeln für Substitutionsvariablen identisch. Siehe Zulässige Namen und Werte von Substitutionsvariablen.

Hinweise für Laufzeitsubstitutionsvariablen in Berechnungsskripten in Essbase ausführen

Wenn Sie Essbase-Berechnungsskripte entwerfen, die Laufzeitsubstitutionsvariablen verwenden, können Sie RTSV_HINT verwenden, um Text zu enthalten und Benutzer zur Laufzeit zur Eingabe von Werten aufzufordern.

Die Informationen in diesem Thema gelten für die Ausführung eines Berechnungsskripts mit Laufzeitersetzungsvariablen in Essbase-Jobs oder API und nicht in Smart View.

Im Berechnungsbefehl SET RUNTIMESUBVARS kann die Deklaration der Laufzeitsubstitutionsvariablen das Tag <RTSV_HINT>rtsv_description</RTSV_HINT> enthalten, in dem rtsv_description eine Zeichenfolge ist, die den Datentyp und die Dateneingabebeschränkung (z.B. eine Ganzzahl bis maximal 100) für die Laufzeitsubstitutionsvariable beschreibt. Die Zeichenfolge rtsv_description wird in der Berechnung nicht verwendet, kann jedoch als Benutzereingabeaufforderung hilfreich sein.

API-Aufrufe können alle Informationen (Name, Standardwert und Beschreibung) abrufen, die in der Laufzeitdeklaration der Substitutionsvariablen in SET RUNTIMESUBVARS angegeben sind. Beispiel: Sie können diese Informationen über den Endpunkt der REST-API Get Essbase Script RTSVs, die Java-API-Methoden IEssIterator.getCalcFileRunTimeSubVars oder IEssIterator.getCalcRunTimeSubVars oder die C-API EssGetRuntimeSubVars zurückgeben. Die Zeichenfolge rtsv_description kann dann verwendet werden, um einen Benutzer zur Eingabe eines Wertes zur Laufzeit aufzufordern oder Eingabedaten zu validieren, bevor der Wert an das Berechnungsskript übergeben wird.

In diesem Beispiel von SET RUNTIMESUBVARS gibt jede Deklaration den Namen, den Standardwert und die Beschreibung der Laufzeitsubstitutionsvariablen an:

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>;
};

Laufzeit-Substitutionsvariablen protokollieren

Um Laufzeit-Substitutionsvariablen zu protokollieren, die in einem Berechnungsskript verwendet werden, setzen Sie die Konfigurationseinstellung ENABLERTSVLOGGING auf TRUE. Logging kann auf Essbase-Server-, Anwendungs- oder Datenbankebene implementiert werden.

Logeinträge der Laufzeitersetzungsvariablen werden in die Anwendungslogdatei geschrieben. Essbase schreibt einen Eintrag für jede Zeichenfolge von Schlüssel/Wert-Paaren in das Anwendungslog (oder eine Liste von Schlüssel/Wert-Paaren, die in einer Datei .rsv angegeben sind, wenn die IEssCube.calcFileWithRunTimeSubVarFile Java-API oder die EssCalcFileWithRuntimeSubVars C-API verwendet wird).

Im folgenden Beispiel werden zwei Laufzeitsubstitutionsvariablen (Entity und Währung) und ihre Werte in einem Eintrag protokolliert:

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

Siehe auch

ENABLERTSVLOGGING