Ativar Cálculos em Blocos Potenciais

Quando você usa uma fórmula em um membro denso em uma dimensão densa, se os valores resultantes forem de uma dimensão densa e o operando ou operandos forem de uma dimensão esparsa, o Essbase não criará automaticamente os blocos necessários.

Se você precisar criar os blocos, poderá criar scripts de cálculo do Essbase para copiar valores, criar blocos e limitar a criação de valores desnecessários.

No exemplo a seguir, suponha que você queira criar dados de despesas e vendas de orçamento a partir de dados reais existentes. Vendas e Despesas são membros na dimensão Medidas densas; Orçamento e Real são membros na dimensão Cenário esparso.

FIX(Budget)
   (Sales = Sales -> Actual * 1.1;
   Expenses = Expenses -> Actual * .95;)
ENDFIX

Vendas e Despesas, os resultados das equações, são membros de dimensão densa; o operando, Real, está em uma dimensão esparsa. Como o Essbase executa fórmulas de membros densos apenas em blocos de dados existentes, o script de cálculo não cria os blocos de dados necessários e os valores de dados de Orçamento não são calculados para blocos que ainda não existem.

Você pode resolver o problema usando as seguintes técnicas:

Copiar Blocos Existentes com DATACOPY

Você pode usar o comando DATACOPY em scripts de cálculo de armazenamento em bloco do Essbase para criar um bloco para cada bloco existente e, em seguida, executar cálculos nos novos blocos.

Por exemplo:

DATACOPY Sales -> Actual TO Sales -> Budget;
DATACOPY Expenses -> Actual TO Expenses -> Budget;
FIX(Budget)
   (Sales = Sales -> Actual * 1.1;
   Expenses = Expenses -> Actual * .95;)
ENDFIX

O Essbase cria blocos que contêm os valores de Orçamento para cada bloco Real correspondente existente. Após os comandos DATACOPY serem concluídos, a parte restante do script altera os valores.

O uso de DATACOPY funciona bem nestas situações:

  • Existe uma relação matemática entre valores em blocos existentes e suas contrapartes criadas pela DATACOPY.

    Por exemplo, no exemplo anterior, os valores de Orçamento podem ser calculados com base nos valores Reais existentes.

    Atenção:

    DATACOPY cria os novos blocos com valores idênticos em todas as células dos blocos de origem. Se a fórmula for executada apenas em uma parte do bloco, essas células copiadas permanecerão no final do cálculo, resultando potencialmente em valores indesejados.

  • Nenhum dos blocos copiados contém apenas valores #MISSING.

    Se existirem valores #MISSING, os blocos são gravados contendo apenas valores #MISSING. Os blocos #MISSING desnecessários exigem recurso e tempo de processamento do Essbase.

Consulte Também

DATACOPY

Calcular Todos os Blocos Potenciais com SET CREATENONMISSINGBLK

Use o comando SET CREATENONMISSINGBLK nos scripts de cálculo de armazenamento em bloco do Essbase para limitar valores indesejados ao calcular dimensões densas ou esparsas.

Se estiver preocupado com valores indesejados, em vez de usar DATACOPY, você pode usar o comando de cálculo SET CREATENONMISSINGBLK ON, que calcula todos os blocos potenciais na memória e, em seguida, armazena apenas os blocos calculados que contêm valores de dados. O comando de cálculo SET CREATENONMISSINGBLK pode ser útil ao calcular valores em dimensões densas ou esparsas.

O exemplo a seguir cria dados de despesas e vendas de orçamento a partir de dados reais existentes. Vendas e Despesas são membros na dimensão Medidas densas; Orçamento e Real são membros na dimensão Cenário esparso.

FIX(Budget)
SET CREATENONMISSINGBLK ON
   (Sales = Sales -> Actual * 1.1;
   Expenses = Expenses -> Actual * .95;)
ENDFIX

Observação:

Se SET CREATEBLOCKONEQ ON estiver definido para dimensões esparsas, SET CREATENONMISSINGBLK ON substituirá temporariamente SET CREATEBLOCKONEQ ON até que um comando SET CREATENONMISSINGBLK OFF seja encontrado ou o script de cálculo seja concluído.

A vantagem de usar o comando SET CREATENONMISSINGBLK é que, quando aplicado em membros densos, apenas as células de dados que são afetadas pela fórmula de membro são salvas. A desvantagem é que muitos blocos potenciais podem ser materializados na memória, possivelmente afetando o desempenho do cálculo. Quando você usa esse comando, é melhor limitar o número de blocos potenciais usando FIX para restringir o escopo dos blocos a serem calculados.