27 Desenvolver Macros de Cálculo Definidas pelo Cliente

As macros definidas pelo cliente (CDMs) do Essbase permitem combinar várias funções de cálculo em uma única função. Você pode usá-los em scripts de cálculo ou fórmulas.

Crie e teste novas macros localmente em um aplicativo de teste. Registre CDMs globalmente somente depois de testá-los em um aplicativo de teste e estar pronto para usá-los em um ambiente de produção.

Para criar e gerenciar CDMs, você deve ter permissão do Database Manager ou superior.

Só há suporte para CDMs em cubos de armazenamento de bloco.

Nome Macros Definidas pelo Cliente

Os nomes de macro (CDM) definida pelo cliente do Essbase devem ser exclusivos e começar com o símbolo @. As macros locais são pré-anexadas ao nome do aplicativo.

Siga estas diretrizes ao nomear CDMs:

  • Inicie o nome da macro com o símbolo "@"; por exemplo, @MYMACRO. O resto de um nome pode conter letras, números e os seguintes símbolos: @, #, $ e _. Os nomes das macros não devem conter espaços.

  • Para macros que são chamadas apenas por outras macros, inicie o nome da macro com "@_", para distingui-lo das macros e funções de uso geral.

  • Dê nomes exclusivos às macros. Além disso, um nome de macro deve ser diferente dos nomes das funções definidas pelo cliente e dos nomes das funções de cálculo existentes.

    Observação:

    Se um aplicativo contiver uma macro local que tenha o mesmo nome que uma macro global, a macro local terá precedência e será usada para cálculo.

  • Para macros locais, é necessário pré-anexar o nome do aplicativo ao nome da macro, separando o nome do aplicativo do nome da macro com um ponto:

    AppName.@MacroName

    Por exemplo:

    Sample.@MYMACRO
  • Como as macros globais estão disponíveis para qualquer aplicativo em execução no Essbase Server em que a macro foi criada, você não atribui um nome de aplicativo a ela.

Criar Macros Definidas pelo Cliente

Quando você cria uma macro definida pelo cliente (CDM), o Essbase a registra em um catálogo. A sua macro pode ser global ou local para um aplicativo. Em seguida, você pode usá-lo em fórmulas e scripts de cálculo, até que a macro seja removida do catálogo.

Você pode registrar um CDM das seguintes maneiras:

  • Como local, em que a macro está disponível apenas no aplicativo Essbase em que foi criada

  • Como global, em que a macro está disponível para todos os aplicativos do Essbase em execução no Essbase Server em que a macro foi criada

Para criar uma CDM:

Use a instrução create macro MaxL.

A instrução MaxL a seguir cria uma macro local chamada @COUNTRANGE para uso no aplicativo de Amostra:

create macro Sample.'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';

A instrução MaxL a seguir cria uma macro global chamada @COUNTRANGE:

create macro'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';

Implementar Macros Definidas pelo Cliente

Use as macros definidas pelo cliente (CDMs) da mesma forma que você usa os comandos de cálculo nativos do Essbase: chamando-os em scripts de cálculo ou associando-os a fórmulas de outline.

Para usar um CDM:

  1. Crie ou abra um script ou fórmula de cálculo existente.
    • Se ele tiver sido registrado localmente, você deverá usar um script de cálculo ou uma fórmula no aplicativo no qual a macro foi criada.

    • Se ele tiver sido registrado globalmente, você poderá usar qualquer script ou fórmula de cálculo em qualquer aplicativo no Essbase Server.

  2. Adicione o CDM ao script ou fórmula de cálculo.

    Por exemplo, para usar a macro personalizada @COUNTRANGE mostrada anteriormente neste capítulo, crie o seguinte script de cálculo:

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

    Use este script de cálculo com o banco de dados Sample.Basic ou substitua "Vendas, Jan:Dec" por um intervalo de membros em um banco de dados de teste.

  3. Salve o script de cálculo ou a fórmula e, em seguida, execute-o normalmente.

Exibir Macros Definidas pelo Cliente

Exiba uma macro definida pelo cliente (CDM) no Essbase para determinar se ela foi criada com sucesso e se é de escopo local ou global.

Para exibir um CDM, use a instrução exibir macro MaxL.

Exemplos de

A instrução MaxL a seguir exibe apenas as macros definidas no aplicativo de Amostra:

display macro on application Sample;

A instrução MaxL a seguir exibe todas as macros globais e locais, se você tiver permissão para exibi-las:

display macro;

Atualizar Macros Definidas pelo Cliente

Para alterar a sintaxe ou o comportamento de uma macro (CDM) definida pelo cliente no Essbase, primeiro determine se ela é de escopo local ou global e, em seguida, use a instrução MaxL criar ou substituir macro para atualizar sua definição.

Para atualizar um CDM:

  1. Determine se a macro está registrada localmente ou globalmente.
  2. Para atualizar a definição da macro, use a instrução create macro MaxL.

Exemplos de

A instrução MaxL a seguir altera a macro local @COUNTRANGE, que é usada somente no aplicativo de Amostra:

create or replace macro Sample.'@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';

A instrução MaxL a seguir altera a macro global @COUNTRANGE:

create or replace macro '@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';

Copiar Macros Definidas pelo Cliente

É possível copiar macros definidas pelo cliente (CDMs) para qualquer Essbase Server e aplicativo ao qual você tenha acesso apropriado. Seu nível de permissão de aplicativo deve ser Gerente de Banco de Dados ou superior.

Para copiar um CDM, use a instrução create or replace macro MaxL.

Exemplo

A instrução MaxL a seguir cria uma cópia da macro @COVARIANCE:

create macro Sample.'@COVARIANCE2'(single, single) as '@COVARIANCE'(single, single);

Remover Macros Definidas pelo Cliente

Para remover uma macro definida pelo cliente (CDM) do Essbase, primeiro determine se ela é de escopo local ou global e use a instrução MaxL drop macro.

Para remover um CDM:

  1. Determine se a macro está registrada localmente ou globalmente.
  2. Verifique se nenhum script de cálculo ou fórmula está usando o CDM.
  3. Para remover a macro do catálogo de macros, use a instrução drop macro MaxL.
  4. Reinicie todos os aplicativos associados à macro.

A instrução MaxL a seguir remove a macro local @COUNTRANGE, que é usada somente no aplicativo de Amostra:

drop macro Sample.'@COUNTRANGE';

A instrução MaxL a seguir remove a macro global @COUNTRANGE:

drop macro '@COUNTRANGE';

Atualizar o catálogo de macros definidas pelo cliente

Atualize o catálogo do Essbase de macros definidas pelo cliente (CDMs) após adicionar, atualizar ou remover macros. Use a instrução MaxL atualizar definições personalizadas se as alterações forem locais ou reinicie o Essbase Server se as alterações forem globais.

Para atualizar o catálogo de CDMs para todos os aplicativos em um servidor, reinicie o servidor. Consulte Iniciar, Interromper e Verificar Servidores para implantações independentes ou Usar Comandos para Iniciar, Interromper e Exibir Status de Processos para implantação de pilha no OCI.

Para atualizar o catálogo de CDMs de um aplicativo, use a instrução Atualizar definições personalizadas MaxL.

Por exemplo, a seguinte instrução MaxL atualiza o catálogo de CDMs para o aplicativo de Amostra:

refresh custom definition on application sample;