Cálculo em Dois Passos

O cálculo em duas etapas pode ser aplicável a fórmulas de membro que devem ser calculadas duas vezes para produzir o valor correto. Você pode marcar um membro da dimensão de contas como dois passos para melhorar o desempenho de alguns aplicativos do Essbase de armazenamento em bloco.

Observação:

Não use cálculo em duas etapas com cubos de modo híbrido. Use apenas a ordem de solução.

Para alguns aplicativos, talvez você consiga melhorar o desempenho marcando um membro da dimensão de contas como dois passos no outline. No entanto, a combinação de dados e necessidades de cálculo pode exigir o uso de um script de cálculo para calcular uma fórmula duas vezes, em vez da marcação de duas passagens, para preservar a precisão.

Sempre que possível, o Essbase calcula fórmulas de dois passos no nível do bloco, simultaneamente com o cálculo principal. Em algumas situações, no entanto, é necessário um passe de cálculo extra.

O modo como o Essbase deve calcular fórmulas de duas etapas depende da configuração densa-esparsa das dimensões de tempo e contas.

Exemplo de Cálculo em Dois Passos

Considere este cálculo obrigatório para % de Lucro:

Profit % = Profit % Sales

Suponha que a tabela abaixo mostre um subconjunto de um bloco de dados com Medidas e Ano como dimensões densas. As medidas são marcadas como contas e o Ano é marcado como tempo. A configuração de AGGMISSG está desativada (padrão).

Os valores de dados foram carregados nas células de entrada. O Essbase calcula as células nas quais os números de 1 a 7 aparecem, nessa ordem. Por exemplo, Lucro % -> Jan é calculado primeiro; Lucro % -> Qtr1 tem vários caminhos de consolidação.

Tabela 34-5 Exemplo de Cálculo em Duas Etapas: Ordem de Dados e Cálculo

Medidas -> Ano Jan Fev Mar Trim1

Lucro

75

50

120

5

Vendas

150

200

240

6

% de lucro

1

2

3

4, 7

Observação:

Para obter informações sobre como a ordem de cálculo da célula depende da configuração do cubo, consulte Ordem de Cálculo da Célula.

O Essbase usa esta ordem de cálculo:

  1. O Essbase calcula a fórmula Profit % Sales para % de Lucro -> Jan, % de Lucro -> Fev, % de Lucro -> Mar e % de Lucro -> Trim1 (1, 2, 3, 4 acima).

  2. O Essbase calcula Lucro -> Trim1 e Vendas -> Trim1 adicionando os valores para Jan, Fev e Mar (5, 6 acima).

  3. O Essbase calcula % de Lucro -> Trim1 adicionando os valores para % de Lucro -> Jan, % de Lucro -> Fev e % de Lucro -> Mar (7 acima). Essa adição de porcentagens produz o valor 125%, o que não é o resultado correto.

    Tabela 34-6 Exemplo de Cálculo de Dois Passos: Resultados Incorretos

    Medidas/Ano Jan Fev Mar Trim1
    Lucro 75 50 120 245 (5)
    Sales 150 200 240 590 (6)

    % de lucro

    50% (1)

    25% (2)

    50% (3)

    0% (4)

    125% (7)

  4. Se você marcar % de Lucro como dois passos no outline, o Essbase usará a fórmula Profit % Sales para recalcular os valores de % de Lucro e produzir os resultados corretos.

    Tabela 34-7 Exemplo de Cálculo de Dois Passos: Resultados Corretos

    Medidas/Ano Jan Fev Mar Trim1
    Lucro 75 50 120 245 (5)
    Sales 150 200 240 590 (6)

    % de lucro

    50% (1)

    25% (2)

    50% (3)

    0% (4)

    125% (7)

    42% (8)

Para obter informações sobre várias aprovações de cálculo, consulte Aprovações de Cálculo.

Interação entre dois passos e cálculo inteligente

Se você estiver usando o Cálculo Inteligente e o cálculo de duas passagens em um aplicativo de armazenamento em blocos, use o cenário que corresponde à configuração do cubo para garantir que o Essbase calcule com precisão as fórmulas de duas passagens.

Observação:

Não use cálculo em duas etapas com cubos de modo híbrido. Use apenas a ordem de solução.

Cenário A: Tag de Dois Passos

Nesse cenário, você coloca fórmulas no outline e, conforme apropriado, marca fórmulas específicas como de dois passos para obter o melhor desempenho.

Sem Aprovação de Cálculo Extra para Fórmulas de Dois Passes

Como o Essbase calcula as fórmulas de duas passagens ao calcular o bloco de dados, o Essbase não precisa fazer uma passagem de cálculo extra.

Todos os Blocos de Dados Marcados como Limpos

Após o cálculo, todos os blocos de dados são marcados como limpos para fins de Cálculo Inteligente.

Quando você marca uma fórmula de membro como dois passos no outline, o Essbase faz o cálculo de dois passos enquanto cada bloco de dados está sendo calculado. No entanto, quando você repete uma fórmula em um script de cálculo, o Essbase deve ler os blocos de dados e gravá-los na memória para recalcular a fórmula.

Cenário B: Script de Cálculo

Neste cenário, você cria um script de cálculo para executar o cálculo da fórmula para melhor desempenho.

Aprovação de Cálculo Extra para Fórmulas de Dois Passes

O Essbase calcula o cubo e, em seguida, faz uma passagem de cálculo extra para calcular as fórmulas de duas passagens. Mesmo que todos os blocos de dados sejam marcados como limpos após o primeiro cálculo, o Essbase ignora o status de limpeza nos blocos relevantes para a fórmula de duas passagens e recalcula esses blocos.

Blocos de Dados para Fórmulas de Dois Passos Não Marcadas como Limpas

Após o primeiro cálculo, o Essbase marcou todos os blocos de dados como limpos. Em uma segunda passagem de cálculo, o Essbase recalcula os blocos de dados necessários para as fórmulas de duas passagens. No entanto, como o segundo cálculo é parcial, o Essbase não marca os blocos recalculados como limpos. Quando você recalcula com o Cálculo Inteligente ativado, esses blocos de dados podem ser recalculados desnecessariamente.

Se a configuração do cubo permitir que o Essbase use o Cenário B, considere o uso de um script de cálculo para executar cálculos de fórmula de duas etapas. Se você usar um script de cálculo, o Essbase ainda fará uma passagem de cálculo extra pelo banco de dados; no entanto, você pode garantir que o Essbase tenha marcado todos os blocos de dados como limpos após o cálculo. Consulte Scripts de Cálculo para Dois Passos e Cálculo Inteligente.

Escolhendo Tag de Cálculo de Dois Passos ou Método de Script de Cálculo

Embora marcar um membro de contas como dois passes possa trazer benefícios de desempenho, alguns aplicativos não podem usar esse método. Verifique estas qualificações para ver se você deve aplicar uma tag de duas passagens ou criar um script de cálculo que execute um cálculo duas vezes para obter melhor desempenho e precisão:

  • Você pode marcar um membro como de duas passagens se ele estiver em uma dimensão marcada como contas. Quando você executa um cálculo padrão no banco de dados, o Essbase recalcula automaticamente quaisquer fórmulas marcadas como de duas passagens se elas estiverem na dimensão marcada como contas.

  • Você pode marcar um membro como de duas passagens se ele for um membro do Cálculo Dinâmico de qualquer dimensão.

  • Talvez seja necessário usar um script de cálculo para calcular uma fórmula de dois passos para obter resultados precisos, mesmo que a tag de dois passos proporcione benefícios de desempenho. Consulte Scripts de Cálculo para Dois Passos e Cálculo Inteligente.

  • Você deverá usar um script de cálculo para calcular uma fórmula duas vezes se a configuração do banco de dados significar que o Essbase usa o Cenário A e se a fórmula fizer referência a valores de outro bloco de dados.

  • Talvez você queira usar um script de cálculo para calcular fórmulas de duas etapas se a configuração do banco de dados significar que o Essbase usa o Cenário B.

Cálculos Padrão com Duas Passagens

Uma configuração de cubo está disponível para ativar dois passos para cálculos padrão. Quando você executa um cálculo padrão em um cubo com duas passagens habilitadas, o Essbase tenta calcular automaticamente fórmulas marcadas como duas passagens na dimensão marcada como contas.

Observação:

Não use cálculo em duas etapas com cubos de modo híbrido. Use apenas a ordem de solução.

Consulte estes tópicos:

Para executar um cálculo padrão, você pode usar a instrução execute Calculation MaxL.

Para ativar o cálculo de duas passagens, você pode usar a instrução alter database MaxL.

Scripts de Cálculo para Dois Passos e Cálculo Inteligente

Ao criar scripts de cálculo do Essbase para executar cálculos de duas etapas com o Cálculo Inteligente, aprenda a usar SET UPDATECALC, SET CLEARUPDATESTATUS e CALC TWOPASS para otimizar os cálculos.

Observação:

Não use cálculo em duas etapas com cubos de modo híbrido. Use apenas a ordem de solução.

Se o seu outline usar fórmulas de duas passagens, siga estas diretrizes para tornar o cálculo o mais preciso e rápido possível:

  • Antes de um comando que recalcula uma fórmula de dois passos, adicione o comando SET UPDATECALC OFF para desativar o Cálculo Inteligente. Se você tiver o Cálculo Inteligente ativado (o padrão), o Essbase calculará apenas os blocos de dados que não estiverem marcados como limpos, mas quando você executar um cálculo padrão com o Cálculo Inteligente ativado, todos os blocos de dados serão marcados como limpos, de modo que o Essbase não executará o recálculo da fórmula de duas passagens.

  • Como o Essbase não recalcula automaticamente fórmulas de duas etapas em scripts de cálculo, você deve usar o comando CALC TWOPASS.

  • Se você tiver alterado o cálculo padrão de CALC ALL e o Cálculo Inteligente estiver ativado, os blocos de dados poderão não ser marcados como limpos após o primeiro cálculo. Consulte Cálculo Inteligente para Cubos de Armazenamento em Blocos.

Para obter os benefícios de desempenho do Cálculo Inteligente ao executar o primeiro cálculo completo do banco de dados, use um dos métodos mostrados na série de exemplos a seguir. O seu melhor método depende das necessidades de cálculo e da estrutura do seu cubo.

Nos exemplos a seguir, suponha que o outline tenha uma dimensão marcada como contas e que seja uma dimensão densa. Você deseja calcular as vendas de cada produto como uma porcentagem de vendas de todos os produtos. Suponha que esta fórmula deva calcular a dimensão:

Sales % Sales -> Product

Quando o Essbase calcula o bloco de dados para cada produto, ele ainda não calculou o valor Vendas -> Produto, portanto, os resultados das vendas de cada produto como uma porcentagem do total de vendas estão incorretos.

Cálculo Inteligente com um Índice Grande

Se o índice do cubo for grande e você quiser usar o Cálculo Inteligente, poderá usar qualquer uma das opções a seguir para obter o melhor desempenho.

Opção de script de cálculo

Use este modelo para criar um script de cálculo que execute um cálculo completo com o Cálculo Inteligente ativado:

SET UPDATECALC ON;

CALC ALL;
SET UPDATECALC OFF;
SET CLEARUPDATESTATUS AFTER;
"Share of Sales" = Sales % Sales -> Product;

Script de Cálculo e Opção de Duas Aprovações

Para marcar um membro como de dois passos e usar um script de cálculo para calcular primeiro o cubo completo, em seguida, o membro de dois passos:

  1. Coloque uma fórmula no outline e marque-a como dois passos.

  2. Coloque a fórmula no membro apropriado na dimensão marcada como contas (em nosso exemplo, Compartilhamento de Vendas).

  3. Crie um script de cálculo que execute um cálculo completo e, em seguida, um cálculo de duas etapas:

    SET UPDATECALC ON;
    CALC ALL;
    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    CALC TWOPASS;

Opção de script de cliente e cálculo

Para executar um cálculo padrão de um cliente e, em seguida, usar um script de cálculo para executar o cálculo da fórmula:

  1. Ative o Cálculo Inteligente, se esse padrão tiver sido alterado.

  2. Executar um cálculo completo.

  3. Use um script de cálculo semelhante a este exemplo para desativar o Cálculo Inteligente e calcular a fórmula:

    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    "Share of Sales" = Sales % Sales -> Product;

    ou

    SET UPDATECALC OFF;
    SET CLEARUPDATESTATUS AFTER;
    CALC TWOPASS;

Todas as opções de exemplo acima executam estas tarefas:

  1. Ative o Cálculo Inteligente.

  2. Calcule o cubo completo e marque os blocos de dados como limpos.

  3. Desative o Cálculo Inteligente.

  4. Marque os blocos recalculados como limpos, mesmo que esse cálculo seja um cálculo parcial do cubo. Se você não usar o comando SET CLEARUPDATESTATUS APÓS, o Essbase marcará os blocos de dados como limpos somente após um cálculo completo.

  5. O Essbase percorre o cubo, calculando apenas a fórmula do membro relevante (Compartilhamento de Vendas em nosso exemplo) ou calculando todas as fórmulas marcadas como de duas passagens no outline.

Exemplo: Cálculo Inteligente com um Índice Pequeno

Para usar o Cálculo Inteligente quando o índice do cubo for pequeno:

  1. Crie um script de cálculo para calcular o cubo, mas diga ao Essbase para não marcar os blocos de dados calculados como limpos.

  2. Marque todos os blocos de dados como limpos e não recalcule-os.

    SET CLEARUPDATESTATUS OFF;
    CALC ALL;
    CALC TWOPASS;
    SET CLEARUPDATESTATUS ONLY;
    CALC ALL;
    1. SET CLEARUPDATESTATUS OFF informa ao Essbase para não marcar os blocos de dados calculados como limpos.

    2. O primeiro CALC ALL faz com que o Essbase percorra o cubo, calculando todos os blocos de dados sujos. O Essbase não marca os blocos calculados como limpos.

      O Essbase não recalcula automaticamente as fórmulas marcadas como de duas passagens.

    3. CALC TWOPASS faz com que o Essbase percorra o cubo, recalculando as fórmulas de duas passagens na dimensão de contas. O Essbase recalcula as fórmulas porque os blocos de dados obrigatórios não foram marcados como limpos pelo CALC ALL anterior. O Essbase não marca os blocos de dados recalculados como limpos.

    4. SET CLEARUPDATESTATUS ONLY informa ao Essbase para marcar os blocos de dados como limpos, mas não para calcular os blocos de dados (este comando desativa o cálculo).

    5. O último CALC ALL faz com que o Essbase percorra o cubo e marque todos os blocos de dados como limpos. Essbase não calcula os blocos de dados.

Exemplo: Cálculo Inteligente Desativado para uma Fórmula de Duas Aprovações

Para desativar o Cálculo Inteligente para uma fórmula de Duas Aprovações, crie um script de cálculo que execute estas tarefas:

  • Desativa o Cálculo Inteligente.

  • Executa um cálculo completo.

  • Repete a seguinte fórmula de dois passos:

    SET UPDATECALC OFF;
    CALC ALL;
    "Share of Sales" = Sales % Sales -> Product;