27 Desarrollo de macros de cálculo definidas personalizadas
Las macros personalizadas (CDM) de Essbase permiten combinar varias funciones de cálculo en una sola función. Puede utilizarlos en scripts de cálculo o fórmulas.
Crear y probar nuevas macros localmente dentro de una aplicación de prueba. Registre los CDM globalmente solo después de haberlos probado en una aplicación de prueba y de estar listos para utilizarlos en un entorno de producción.
Para crear y gestionar CDM, debe tener el permiso de Database Manager o superior.
Los CDM solo se admiten para cubos de almacenamiento en bloque.
Nombre de macros definidas personalizadas
Los nombres de macro definida personalizada (CDM) de Essbase deben ser únicos y empezar por el símbolo @. Las macros locales se anteponen al nombre de la aplicación.
Siga estas directrices al asignar un nombre a los CDM:
-
Inicie el nombre de la macro con el símbolo "@"; por ejemplo, @MYMACRO. El resto de un nombre puede contener letras, números y los siguientes símbolos: @, #, $ y _. Los nombres de macro no deben contener espacios.
-
Para las macros a las que solo llaman otras macros, inicie el nombre de la macro con "@_", para distinguirlo de las macros y funciones de uso general.
-
Proporcione nombres únicos a las macros. Además, un nombre de macro debe ser diferente de los nombres de funciones definidas personalizadas y de los nombres de funciones de cálculo existentes.
Note:
Si una aplicación contiene una macro local que tiene el mismo nombre que una macro global, la macro local tiene prioridad y se utiliza para el cálculo.
-
Para las macros locales, debe anteponer el nombre de la aplicación al nombre de la macro, separando el nombre de la aplicación del nombre de la macro con un punto:
AppName.@MacroNamePor ejemplo:
Sample.@MYMACRO -
Dado que las macros globales están disponibles para cualquier aplicación que se ejecute en el servidor de Essbase en el que se creó la macro, no se le asigna un nombre de aplicación.
Crear macros definidas personalizadas
Al crear una macro definida personalizada (CDM), Essbase la registra en un catálogo. Su macro puede ser global o local para una aplicación. A continuación, puede utilizarlo en fórmulas y scripts de cálculo, hasta que la macro se elimine del catálogo.
Puede registrar un CDM de las siguientes maneras:
-
Como local, en el que la macro solo está disponible en la aplicación de Essbase en la que se creó
-
Como global, en el que la macro está disponible para todas las aplicaciones de Essbase que se ejecutan en el servidor de Essbase en el que se creó la macro
Para crear un CDM:
Utilice la sentencia create macro MaxL.
La siguiente sentencia MaxL crea una macro local denominada @COUNTRANGE para su uso en la aplicación de ejemplo:
create macro Sample.'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';La siguiente sentencia MaxL crea una macro global denominada @COUNTRANGE:
create macro'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';Implantación de macros definidas personalizadas
Utilice sus macros definidas personalizadas (CDM) de la misma forma que utiliza los comandos de cálculo nativos de Essbase: llamándolos en scripts de cálculo o asociándolos con fórmulas de esquema.
Para utilizar un CDM:
Ver macros definidas personalizadas
Consulte una macro definida personalizada (CDM) en Essbase para determinar si se ha creado correctamente y si tiene un ámbito local o global.
Para ver un CDM, utilice la sentencia MaxL display macro.
Ejemplos
La siguiente instrucción MaxL muestra solo las macros definidas en la aplicación de ejemplo:
display macro on application Sample;La siguiente sentencia MaxL muestra todas las macros globales y locales, si tiene permiso para verlas:
display macro;Actualizar macros definidas personalizadas
Para cambiar la sintaxis o el comportamiento de una macro definida personalizada (CDM) en Essbase, primero determine si es de ámbito local o global y, a continuación, utilice la sentencia MaxL crear o sustituir macro para actualizar su definición.
Para actualizar un CDM:
Ejemplos
La siguiente sentencia MaxL cambia la macro local @COUNTRANGE, que solo se utiliza en la aplicación de ejemplo:
create or replace macro Sample.'@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';La siguiente sentencia MaxL cambia la macro global @COUNTRANGE:
create or replace macro '@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';Copiar macros definidas personalizadas
Puede copiar macros definidas personalizadas (CDM) en cualquier servidor de Essbase y aplicación a la que tenga el acceso adecuado. El nivel de permiso de la aplicación debe ser Database Manager o superior.
Para copiar un CDM, utilice la sentencia crear o sustituir macro MaxL.
Ejemplo
La siguiente sentencia MaxL crea una copia de la macro @COVARIANCE:
create macro Sample.'@COVARIANCE2'(single, single) as '@COVARIANCE'(single, single);Eliminar macros definidas personalizadas
Para eliminar una macro definida personalizada (CDM) de Essbase, primero determine si es de ámbito local o global y, a continuación, utilice la sentencia drop macro de MaxL.
Para eliminar un CDM:
La siguiente sentencia MaxL elimina la macro local @COUNTRANGE, que solo se utiliza en la aplicación de ejemplo:
drop macro Sample.'@COUNTRANGE';La siguiente sentencia MaxL elimina la macro global @COUNTRANGE:
drop macro '@COUNTRANGE';Actualización del catálogo de macros definidas de forma personalizada
Actualice el catálogo de macros definidas personalizadas (CDM) de Essbase después de agregar, actualizar o eliminar macros. Utilice la sentencia MaxL refrescar definiciones personalizadas si los cambios son locales o reinicie el servidor de Essbase si los cambios son globales.
Para actualizar el catálogo de CDM para todas las aplicaciones de un servidor, reinicie el servidor. Consulte Inicio, Parada y Comprobación de Servidores para ver despliegues independientes o Uso de Comandos para Iniciar, Parar y Ver Estado de Procesos para ver el despliegue de pila en OCI.
Para refrescar el catálogo de CDM para una aplicación, utilice la sentencia refrescar definiciones personalizadas MaxL.
Por ejemplo, la siguiente sentencia MaxL refresca el catálogo de CDM para la aplicación de ejemplo:
refresh custom definition on application sample;