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.@MacroName

    Por 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:

  1. Cree o abra un script o fórmula de cálculo existente.
    • Si se registró localmente, debe usar un script de cálculo o una fórmula dentro de la aplicación en la que se creó la macro.

    • Si se registró globalmente, puede utilizar cualquier script o fórmula de cálculo dentro de cualquier aplicación en el servidor de Essbase.

  2. Agregue el CDM al script de cálculo o la fórmula.

    Por ejemplo, para utilizar la macro definida personalizada @COUNTRANGE que se muestra anteriormente en este capítulo, cree el siguiente script de cálculo:

    CountMbr = @COUNTRANGE(Sales, Jan:Dec);

    Utilice este script de cálculo con la base de datos Sample.Basic o sustituya "Sales, Jan:Dec" por un rango de miembros en una base de datos de prueba.

  3. Guarde el script o la fórmula de cálculo y, a continuación, ejecútela como de costumbre.

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:

  1. Determine si la macro está registrada localmente o globalmente.
  2. Para actualizar la definición de la macro; utilice la sentencia create macro MaxL.

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:

  1. Determine si la macro está registrada localmente o globalmente.
  2. Compruebe que no hay scripts de cálculo ni fórmulas que utilicen el CDM.
  3. Para eliminar la macro del catálogo de macros, utilice la sentencia drop macro MaxL.
  4. Reinicie todas las aplicaciones asociadas a la macro.

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;