Variables de sustitución del tiempo en ejecución en scripts de cálculo ejecutadas en Essbase
Las variables de sustitución de tiempo de ejecución (RTSV) permiten hacer referencia de forma dinámica a los nombres de miembros en los scripts de cálculo de Essbase en lugar de codificarlos. Una variable de sustitución de tiempo de ejecución se puede incluir en un script de cálculo siempre que se permitan variables de sustitución.
En un script de cálculo, un ampersand (&) debe preceder al nombre de la variable de sustitución de tiempo de ejecución.
Todas las variables de sustitución de tiempo de ejecución utilizadas en una secuencia de comandos de cálculo se deben declarar en el comando de cálculo SET RUNTIMESUBVARS, con un nombre y un valor por defecto.
Note:
Si no se incluye un valor por defecto en la declaración de variable de sustitución en tiempo de ejecución en SET RUNTIMESUBVARS, se produce un error cuando se valida el script de cálculo. Oracle recomienda proporcionar un valor por defecto para evitar el error de validación y, al ejecutar el script de cálculo, proporcionar el valor esperado. Sin embargo, si no proporciona un valor por defecto, aún puede proporcionar un valor en tiempo de ejecución mediante la sentencia MaxL de cálculo de ejecución con la gramática con runtimesubvars.
Una descripción del tipo de dato y el límite de entrada de datos de la variable de sustitución de tiempo de ejecución es una cadena en la etiqueta <RTSV_HINT>rtsv_description</RTSV_HINT>. Esta etiqueta es opcional cuando el script de cálculo con variables de sustitución de tiempo de ejecución se ejecuta en Essbase; consulte Indicaciones para variables de sustitución de tiempo de ejecución en scripts de cálculo ejecutados en Essbase. La etiqueta <RTSV_HINT>, con metadatos adicionales, es necesaria cuando el script de cálculo con variables de sustitución de tiempo de ejecución se ejecuta en Smart View. Consulte Variables de sustitución del tiempo en ejecución en scripts de cálculo ejecutadas en Smart View.
En este ejemplo de SET RUNTIMESUBVARS, se declaran tres variables de sustitución de tiempo de ejecución: myMarket, salesNum y pointD. Los valores por defecto se especifican para cada variable de sustitución de tiempo de ejecución (por ejemplo, el valor de myMarket es "New York"). Este ejemplo se aplica a un script de cálculo que se ejecuta en Essbase:
SET RUNTIMESUBVARS
{
myMarket = "New York";
salesNum = 10;
pointD = "Actual"->"Final";
};En tiempo de ejecución, los valores por defecto que se especifican en el comando SET RUNTIMESUBVARS se pueden sobrescribir mediante uno de estos métodos:
-
La sentencia MaxL de cálculo de ejecución con la gramática with runtimesubvars, en la que las variables de sustitución de tiempo de ejecución se especifican como una cadena de pares clave/valor.
Con el ejemplo anterior de SET RUNTIMESUBVARS, en tiempo de ejecución puede sobrescribir el valor predeterminado salesNum de 10 con 500 mediante la siguiente sentencia MaxL:
execute calculation appname.dbname.calcScriptName with runtimesubvars 'salesNum=500';El uso de esta sentencia MaxL también permite proporcionar valores para variables de sustitución de tiempo de ejecución que no tienen un valor por defecto en la declaración SET RUNTIMESUBVARS.
-
Llamada de API en la que las variables de sustitución de tiempo de ejecución se especifican como una cadena de pares clave/valor: IEssCube.calcFileWithRunTimeSubVars (API de Java) o EssCalcWithRuntimeSubVars (API de C)
-
Llamada de API en la que se pueden especificar variables de sustitución de tiempo de ejecución en un archivo de texto en la computadora cliente o como una cadena de pares clave/valor: IEssCube.calcFileWithRunTimeSubVarFile (API de Java) o EssCalcFileWithRuntimeSubVars (API de C)
Al especificar variables de sustitución de tiempo de ejecución como una cadena de pares clave/valor, la cadena se debe incluir entre comillas simples y los pares clave/valor se deben separar con un punto y coma, incluido un punto y coma después de la última variable de sustitución de tiempo de ejecución en la cadena y antes de las comillas simples de terminal. En este ejemplo de una cadena de variable de sustitución de tiempo de ejecución, se especifican el nombre y el valor de cuatro variables de sustitución de tiempo de ejecución (por ejemplo, el valor de la variable de sustitución de tiempo de ejecución denominada "a" es 100):
'a=100;b=@CHILDREN("100");c="Actual"->"Final";d="New York";'Al especificar variables de sustitución de tiempo de ejecución en un archivo de texto, cree el archivo de texto con una extensión .rsv en la computadora cliente. (Essbase no soporta archivos de variables de sustitución de tiempo de ejecución ubicados en el equipo del servidor de Essbase). Cada línea del archivo especifica una variable de sustitución de tiempo de ejecución como un par clave/valor y debe terminar con un punto y coma. En este ejemplo de un archivo .rsv, se especifican el nombre y el valor de cuatro variables de sustitución de tiempo de ejecución:
a=100;
b=200;
c=@CHILDREN("100");
d=@TODATE("DD/MM/YY","10/11/12");Cuando se ejecuta un cálculo, los valores de las variables de sustitución de tiempo de ejecución se determinan en el siguiente orden:
-
Valores especificados mediante la sentencia MaxL de cálculo de ejecución con la gramática with runtimesubvars o las API (IEssCube.calcFileWithRunTimeSubVars o IEssCube.calcFileWithRunTimeSubVarFile API de Java; EssCalcWithRuntimeSubVars o EssCalcFileWithRuntimeSubVars C API).
-
Valores por defecto especificados en el comando de cálculo SET RUNTIMESUBVARS.
Tenga en cuenta estas directrices al utilizar variables de sustitución de tiempo de ejecución:
-
Si declara una variable de sustitución de tiempo de ejecución en SET RUNTIMESUBVARS pero no utiliza la variable de sustitución de tiempo de ejecución en el script de cálculo, Essbase ignora la declaración de variable de sustitución de tiempo de ejecución no utilizada (no se genera ninguna advertencia ni excepción).
-
Las variables de sustitución de tiempo de ejecución tienen una prioridad mayor que las variables de sustitución. Por lo tanto, si una variable de sustitución y una variable de sustitución de tiempo de ejecución tienen el mismo nombre (por ejemplo, myProduct), el valor de la variable de sustitución de tiempo de ejecución sobrescribe el valor de la variable de sustitución.
-
Si varias variables de sustitución de tiempo de ejecución tienen el mismo nombre pero tienen valores diferentes, solo se utiliza el valor de la primera instancia de la variable de sustitución de tiempo de ejecución; todos los demás valores posteriores se ignoran.
Las reglas para definir nombres y valores para las variables de sustitución en tiempo de ejecución son las mismas que para las variables de sustitución. Consulte Valores y nombres de variables de sustitución permitidos.
Sugerencias para Variables de Sustitución de Tiempo de Ejecución en Scripts de Cálculo ejecutados en Essbase
Al diseñar scripts de cálculo de Essbase que utilizan variables de sustitución en tiempo de ejecución, puede utilizar RTSV_HINT para contener texto para solicitar a los usuarios que introduzcan valores en tiempo de ejecución.
La información de este tema se aplica a la ejecución de un script de cálculo con variables de sustitución de tiempo de ejecución en trabajos o API de Essbase, en lugar de en Smart View.
En el comando de cálculo SET RUNTIMESUBVARS, la declaración de variable de sustitución de tiempo de ejecución puede incluir la etiqueta <RTSV_HINT>rtsv_description</RTSV_HINT>, en la que rtsv_description es una cadena que describe el tipo de dato y el límite de entrada de datos (por ejemplo, un entero no mayor que 100) para la variable de sustitución de tiempo de ejecución. La cadena rtsv_description no se utiliza en el cálculo, pero puede ser útil como petición de datos de usuario.
Las llamadas de API pueden recuperar toda la información (nombre, valor por defecto y descripción) que se especifica en la declaración de variable de sustitución en tiempo de ejecución en SET RUNTIMESUBVARS. Por ejemplo, puede devolver esta información mediante el punto final Obtener RTSV de script de Essbase de la API de REST, los métodos de API de Java IEssIterator.getCalcFileRunTimeSubVars o IEssIterator.getCalcRunTimeSubVars, o la API de C EssGetRuntimeSubVars. La cadena rtsv_description se puede utilizar para solicitar a un usuario que introduzca un valor en tiempo de ejecución o para validar los datos de entrada antes de transferir el valor al script de cálculo.
En este ejemplo de SET RUNTIMESUBVARS, cada declaración especifica el nombre, el valor por defecto y la descripción de la variable de sustitución en tiempo de ejecución:
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>;
};Registro de variables de sustitución de tiempo
Para registrar las variables de sustitución de tiempo de ejecución que se utilizan en un script de cálculo, defina el valor de configuración ENABLERTSVLOGGING en TRUE. El registro se puede implementar en el nivel de servidor de Essbase, aplicación o base de datos.
Las entradas de log de variables de sustitución de tiempo de ejecución se escriben en el archivo log de la aplicación. Essbase escribe una entrada en el log de la aplicación para cada cadena de pares de clave/valor (o una lista de pares de clave/valor especificados en un archivo .rsv al utilizar la API de Java IEssCube.calcFileWithRunTimeSubVarFile o la API de EssCalcFileWithRuntimeSubVars C).
En el siguiente ejemplo, dos variables de sustitución de tiempo de ejecución (Entity y Currency) y sus valores se registran en una entrada:
Executing calc script 'calcprofit.csc' with runtime substitution variables {Entity = "MyCompany"; Currency = "USD";}Consulte también