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.@MacroNamePor 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:
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:
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:
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;