Cálculos personalizados em cubos de armazenamento agregados
Os cálculos personalizados estendem os recursos analíticos do Essbase, permitindo a execução de cálculos recorrentes em cubos de armazenamento agregado (ASO). Você pode direcionar determinadas áreas de cubo para calcular, fornecendo informações de débito, crédito e contrapartida para contabilidade.
Você pode gravar cálculos personalizados para cubos de armazenamento agregado que atualizam células de nível 0 de destino. Os scripts de cálculo personalizados são expressos em MDX.
Usando cálculos personalizados, você pode fazer cálculos básicos em saldos de conta em um livro-razão e gravar os resultados em membros de nível 0 de destino de um cubo de armazenamento agregado do Essbase. Você pode realizar cálculos em saldos de conta ou em valores fixos e pode ser programado para repetir cada período contábil.
Os cálculos personalizados podem ser úteis quando o cubo é usado para relatórios do razão geral, em que a contabilidade de entrada dupla está em vigor. Itens de débito, como ativos e despesas, devem ser balanceados com itens de crédito, como patrimônio líquido e receita.
Use o seguinte workflow para criar e executar cálculos personalizados:
-
Crie um script de cálculo expresso em MDX.
-
Selecione uma área do cubo na qual o cálculo será executado. Você fornece a área no momento da execução usando os parâmetros de destino e PDV (ponto de vista).
-
Se você usar o processamento de débito e crédito, selecione os membros de débito e crédito na estrutura para gravar os valores positivo e negativo. Você fornece esses parâmetros no momento da execução.
-
Se você usar as entradas de compensação, selecione a área onde as entradas de compensação devem ser feitas. Você fornece esse parâmetro no momento da execução usando uma tupla MDX. Se um desvio não for especificado ou estiver vazio, o cálculo de desvio não será realizado.
Observação:
Na contabilidade do razão geral, uma entrada de compensação é uma medida de contrabalanceamento no lado oposto do razão; por exemplo, um crédito de US$ 100 em janeiro pode ter uma compensação de US$ 100 adicionada ao lado do débito do razão, para que o razão possa ser balanceado em preparação para uma próxima despesa desse valor.
-
Execute o script de cálculo personalizado.
Lista de critérios de cálculos personalizados
Quando você cria cálculos personalizados para cubos de armazenamento agregado (ASO) do Essbase, os critérios a serem considerados incluem: PDV (região de contexto), o script de cálculo MDX, o destino (onde os resultados são gravados), a região de origem (referenciada por fórmulas), um valor de compensação opcional e membros opcionais de crédito e débito.
A funcionalidade de cálculo personalizado depende de uma variedade de critérios especificados. Revise esses períodos letivos antes de continuar.
Tabela 38-1 Descrição dos Critérios de Cálculos Personalizados
| Critérios | Descrição |
|---|---|
|
PDV |
Uma região simétrica no banco de dados que descreve o contexto no qual os cálculos personalizados são executados. Os membros do atributo não podem ser usados para este argumento. |
|
Script de Cálculo |
Um script de cálculo expresso em MDX. Os membros do atributo não podem ser usados no lado esquerdo da equação. |
|
Target |
Um argumento de tupla expresso em MDX que define a região no cubo em que os resultados do cálculo são gravados. Esse argumento é combinado com o lado esquerdo de cada fórmula e o deslocamento para determinar onde os resultados e os valores de deslocamento são gravados. Os membros do atributo não podem ser usados para este argumento. |
|
(Opcional) Compensação |
O local no banco de dados em que um valor de compensação para cada valor de origem é gravado. Os membros do atributo não podem ser usados para este argumento. |
|
(Opcional) Membros de crédito e débito |
Na contabilidade de entrada dupla, os lançamentos de saldo de uma transação. Ambas são expressões de membros MDX. O membro de débito indica um membro no qual os valores de resultado positivo são gravados e o membro de crédito indica um membro no qual os valores de resultado negativo são gravados. Os membros do atributo não podem ser usados para este argumento. |
|
Região de origem |
Uma expressão de conjunto MDX que especifica a região do cubo referenciada pelas fórmulas no script. |
Gravar e Executar Cálculos Personalizados ASO
Grave e execute cálculos personalizados para cubos de armazenamento agregado do Essbase para fazer atualizações nas células de nível 0 de destino. Os scripts de cálculo personalizados são expressos em MDX. Para executar os scripts, use o cálculo de execução do MaxL.
Gravando Cálculos Personalizados
Script de cálculo personalizado é um arquivo que você cria e armazena com uma extensão .csc. Crie o script de cálculo personalizado com um ou uma série de pares de expressão de tupla no MDX, terminados por ponto-e-vírgula. A sintaxe:
tuple := numeric_value_expression;A tuple é uma especificação MDX de um ou mais membros em que nenhum membro pode ser da mesma dimensão. A tupla deve estar no lado esquerdo da equação e é o principal fator para determinar onde os resultados do cálculo personalizado são gravados.
Só são aceitos nomes de membros na expressão da tupla. O uso de funções MDX não é suportado para scripts de cálculo personalizados.
Observação:
O fator secundário que determina o destino dos resultados é o parâmetro destino e o terceiro é o parâmetro PDV. Você especifica o segundo e o terceiro parâmetros no tempo de execução do cálculo, em vez de como parte do script de cálculo.
A numeric_value_expression é uma expressão de valor numérico de MDX simples, como um número ou uma operação aritmética. A expressão deve estar à direita da equação. Somente operadores aritméticos são permitidos. Um erro será retornado se operadores que não sejam aritméticos (como instruções AND, OR ou IF) forem usados.
Os nomes de membro podem ser usados na expressão de valor numérico, mas o uso de funções de membro não é suportado para scripts de cálculo personalizados.
Os membros do atributo não podem ser usados no lado esquerdo da equação em um script de cálculo personalizado.
Defina também a região de origem, que serve como uma dica de desempenho para o Essbase. O Essbase pré-busca os dados especificados na região de origem e os usa para executar o cálculo especificado no script.
Execução de cálculos personalizados
Você pode executar cálculos personalizados usando a instrução MaxL executar cálculo (armazenamento agregado).
Você também pode executar scripts de cálculo personalizados usando a API, chamando o método da API Java IEssPerformCustomCalc.performCustomCalc ou a função da API C EssPerformCustomCalcASO.
Você também pode usar o Oracle Hyperion Calculation Manager para projetar um cálculo personalizado e implantá-lo para execução no Enterprise Scheduling Services.
Exemplo de caso de uso para cálculos personalizados
Este exemplo de caso de uso para um cálculo personalizado em um cubo de armazenamento agregado (ASO) do Essbase utiliza um membro de crédito, um membro de débito e uma compensação para executar alocações de despesas de aluguel de negócios.
Considere um outline com as seguintes dimensões:
-
Empresa, contendo CompanyA, CompanyB e outros filhos.
-
Departamento, que contém departamentos numerados como 101, 102, 103.
-
Conta, na qual a Conta 5740 é uma conta de despesa de aluguel e o SQFT é uma conta estatística usada para registrar a metragem quadrada de cada departamento.
-
Cenário, no qual o membro Real é onde os dados são lançados, e o membro Alocação é onde as alocações e os cálculos personalizados são armazenados. O membro Cenário é um pai que agrega os membros filho Real e Alocação.
-
Ano, uma dimensão de tempo organizada por meses e trimestres.
-
Geografia, uma dimensão organizada por estados e cidades.
-
Tipo de Valor, em que Débito é o destino, e Crédito é a contrapartida.
-
Projeto, uma dimensão que contém projetos como Proj1, Proj2.
O PDV é uma expressão de conjunto MDX que indica onde o cálculo personalizado deve ser executado. É especificado do seguinte modo:
CrossJoin( { ( [Company], [101], [Jan], [Scenario] ) },
Descendants( Geography, Geography.Levels(0)) )
DebitMember é uma expressão de membro MDX que indica um membro de débito no qual os valores de resultado positivo devem ser gravados. É especificado como [BeginningBalance_Debit].
CreditMember é uma expressão de membro MDX que indica um membro de crédito para o qual os valores de resultado negativo e de compensação devem ser gravados. É especificado como [BeginningBalance_Credit].
Observação:
A contrapartida é gravada no membro de débito no caso de a soma de todos os valores de resultado ser negativa.
O deslocamento é uma expressão de tupla MDX que indica onde as entradas de compensação devem ser feitas. É especificado como ([Account_NA], [Project_NA]).
A expressão de deslocamento é combinada com Destino e PDV para determinar o local onde as entradas de deslocamento são feitas. Se as dimensões se sobrepuserem, a ordem para resolver o local de deslocamento será o deslocamento, o destino e o PDV, nessa ordem.
O destino é uma expressão de tupla MDX que indica onde gravar os resultados do cálculo personalizado. É especificado como(Allocation).
A expressão de destino é combinada com o PDV e o lado esquerdo de cada linha no script de cálculo personalizado para determinar o local onde os resultados são gravados. Se as dimensões se sobrepuserem, a ordem para resolver o local de destino será o lado esquerdo das equações, o destino e o PDV, nessa ordem. Neste exemplo, os resultados são gravados no membro Alocação porque o destino substitui o membro Cenário especificado no PDV.
Veja a seguir um exemplo de script de cálculo personalizado:
(AccountA,Proj1) := 100;
([AccountB], [Proj1]) := ([AccountB], [Proj1]) * 1.1;
(AccountC,Proj1) :=
((AccountB,Proj1,2007) + (AccountB, Proj1)) / 2;
(AccountA,Proj2) :=
((AccountD,Proj1) +
(AccountB,Proj2)) / 2;Para cada combinação no PDV,
-
O script de cálculo é executado no contexto da combinação de PDV atual.
-
Um valor de desvio é gravado no local de destino.
Observação:
Cada fórmula (linha no script de cálculo) é executada simultaneamente, e não sequencialmente. Portanto, não é possível usar o resultado de uma fórmula em uma fórmula subsequente.
Para definir a região de origem, examine o script de cálculo personalizado e determine quais membros são referenciados no lado direito das equações. No mínimo, a região de origem deve incluir todos os membros do lado direito das instruções de atribuição no script de cálculo personalizado.
Defina a região de origem como um único conjunto MDX. Se os membros no lado direito das equações forem de mais de uma dimensão, você poderá usar o CrossJoin para criar o conjunto a partir de dois conjuntos. CrossJoin só aceita dois conjuntos, portanto, talvez você precise usar CrossJoins aninhadas.
A região de origem do script de cálculo personalizado acima é:
Crossjoin(
{[AccountB], [AccountD]},
Crossjoin(
{[Proj1], [Proj2]}, {[2007]}
)
)
Não é necessário incluir membros na região de origem que não estejam atribuídos no script. Por exemplo, se você adicionasse à região de origem um [AccountC], que não é usado no script, ele seria ignorado e poderia causar um pequeno prejuízo ao desempenho.
Não é necessário contabilizar números na região de origem. Por exemplo, a seguinte atribuição em um script de cálculo personalizado não requer que nada seja adicionado à região de origem: ([Bud Var]):=10.
Otimize Cálculos Personalizados com NONEMPTYTUPLE
Usando a propriedade NONEMPTYTUPLE, você pode otimizar um script de cálculo personalizado de armazenamento agregado (ASO) do Essbase para conservar recursos de memória, ignorando tuplas vazias ao calcular conjuntos de dados grandes e esparsos.
Como grandes conjuntos de dados podem ser muito esparsos, o uso da propriedade NONEMPTYTUPLE em scripts de cálculo personalizados pode otimizar seu script para conservar recursos de memória.
Você cria um script de cálculo personalizado com um ou uma série de pares de expressão de tupla no MDX, terminados por ponto e vírgula. Opcionalmente, você pode filtrar conjuntos de resultados vazios que não estão sendo calculados, incluindo a cláusula de propriedade NONEMPTYTUPLE no script de cálculo personalizado.
O uso da cláusula de propriedade NONEMPTYTUPLE em um script de cálculo personalizado indica ao Essbase que o valor da célula que está sendo calculado para uma tupla está vazio sempre que o nonempty_member_list fornecido está vazio.
Sintaxe
use_optimized_way;
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;Where
-
use_optimized_way — uma palavra-chave literal, necessária para ativar o uso da propriedade NONEMPTYTUPLE no script de cálculo. Se omitidas, as diretivas NONEMPTYTUPLE serão ignoradas.
-
tuple—uma especificação MDX de um ou mais membros, na qual dois membros não podem ser da mesma dimensão.
-
NONEMPTYTUPLE — uma propriedade opcional que você pode usar para otimizar o desempenho do cálculo. Se usado, você deverá seguir essa propriedade literal com nonempty_member_list.
-
nonempty_member_list—um ou mais nomes de membros separados por vírgulas de diferentes dimensões.
-
numeric_value_expression — uma expressão de valor numérico de MDX simples, como um número ou uma operação aritmética. A expressão deve estar à direita da equação. Somente operadores aritméticos são permitidos. Um erro será retornado se operadores que não sejam aritméticos (como instruções AND, OR ou IF) forem usados.
Exemplos
Os exemplos de script de cálculo personalizado a seguir incluem uma cláusula de propriedade NONEMPTYTUPLE para filtrar as tuplas vazias de serem incluídas na passagem de cálculo.
use_optimized_way;
([Balance].[Net Balance].[Net Change].[Allocation Out]):= NONEMPTYTUPLE ([Balance].[Remainder],[Rule]) -(([Balance].[Remainder],[Rule])*(20.24000/100));([2014], [August], [Actual]):= NONEMPTYTUPLE ([2014], [January], [Actual]) ([2014], [January], [Actual]);Informações Adicionais