Rastrear Cálculos

Use o rastreamento de cálculo do Essbase para obter informações sobre processamento de fórmula de membro, ajudando a depurar e refinar scripts de cálculo de armazenamento em blocos. Ative CALCTRACE para rastreamento de cálculo contextual do Smart View ou use o comando SET TRACE para selecionar as interseções de dados a serem rastreadas.

O rastreamento de cálculos permite acessar informações registradas sobre um cálculo, após o script de cálculo ser executado com sucesso em um cubo.

O rastreamento de um cálculo não altera nada no comportamento do cálculo. Se um cálculo for iniciado no Smart View, e o servidor conectado tiver um rastreamento de cálculo ativado por um administrador, o Smart View exibirá uma caixa de diálogo pop-up contendo detalhes, após a execução do cálculo. As informações de rastreamento de cálculo podem ser coladas da caixa de diálogo pop-up em um editor de texto. Ou, você pode localizar as mesmas informações no arquivo calc_trace.txt, localizado no diretório de arquivos do banco de dados no Essbase.

As informações de rastreamento de cálculo podem ajudá-lo a depurar a execução do script de cálculo, caso os resultados do cálculo não sejam o que você esperava.

O rastreamento de cálculo não é suportado em aplicativos com gerenciamento de cenários habilitado.

Para permitir o rastreamento de cálculo, o administrador deve primeiro ativar o parâmetro de configuração do aplicativo CALCTRACE. Após o rastreamento de cálculos ser ativado em seu aplicativo, há duas maneiras de aproveitar esse recurso:

  • No Smart View, você pode usar o rastreamento contextual para um único valor de célula.
    1. No Smart View, conecte uma planilha de consulta ao aplicativo no qual você ativou o rastreamento de cálculos.
    2. Destaque uma célula de dados cujo valor calculado você gostaria de rastrear.
    3. No painel Dados da guia Essbase, clique no botão Calcular e selecione um script de cálculo a ser executado. Você verá o ponto de vista da sua célula de dados destacada nos prompts de runtime do rastreamento de membro.
    4. Clique em Iniciar para executar o script de cálculo.

      O escopo completo do cálculo, conforme contido no script, será calculado, mas somente o contexto da célula de dados destacada será rastreado durante o cálculo.

    5. Ao final do script de cálculo, examine a caixa de diálogo Resultado do Cálculo, que mostra os resultados antes e após o cálculo para sua célula de dados destacada.

      Se a célula de dados destacada não tiver sido modificada durante o cálculo, você verá uma mensagem indicando que a célula foi modificada.

  • Nos scripts de cálculo, você pode usar o comando de cálculo SET TRACE para selecionar interseções de dados a serem rastreadas. SET TRACE permite rastrear múltiplas células de dados. Além disso, você pode rastrear seções de scripts de cálculo usando uma combinação de SET TRACE mbrList (para ativar o rastreamento de cálculos sobre uma lista de membros) e SET TRACE OFF (para desativar o rastreamento de cálculos até que um novo SET TRACE seja encontrado no script. Para usar o comando SET TRACE, execute o script de cálculo fora do Smart View, usando o Cube Designer, o comando calc da CLI, um job Executar Cálculo na interface web do Essbase ou o MaxL (instrução executar cálculo).

O script de cálculo a seguir é executado no Sample Basic. O script inclui um comando SET TRACE, solicitando informações detalhadas a serem registradas para a interseção de dados (célula) que representa as vendas de janeiro orçadas, no mercado da Califórnia, para o número de SKU de produto 100-10.

SET TRACEID "id042"
SET TRACE ("100-10", "California", "Jan", "Sales", "Budget");
FIX("California", "Budget")
   "Sales" (
      "100-10" = @MEMBER(@CONCATENATE(@NAME(@PARENT("Product")), "-20")) / 10;
   );
ENDFIX;

Nota:

O comando SET TRACEID também é recomendado, a fim de evitar que o arquivo de rastreamento de cálculo seja substituído.

O Sample Basic possui duas dimensões esparsas: Produto e Mercado. A fórmula do membro está em Vendas, um membro de Medidas, que é uma dimensão densa. A lista de membros da instrução FIX contém apenas um membro disperso, Califórnia, que pertence à dimensão Mercado.

O número de blocos existentes no escopo FIX determina o número de vezes que a célula rastreada é calculada. Neste exemplo, o cálculo faz um ciclo por todas as combinações de membros dispersos existentes de Califórnia. Cada uma dessas combinações representa um bloco.

Após a conclusão do cálculo, as seguintes informações de rastreamento são registradas e exibidas em calc_trace_id042.txt:

Tracing cell: [100-10][California][Jan][Sales][Budget]  (Cell update count: 1)
Previous value: 840.00
Dependent values: 
        [100-20][California][Jan][Sales][Budget] = 140.00
New value: [100-10][California][Jan][Sales][Budget] = 14.00

Computed in lines: [91 - 93] using:
"Sales"(
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10;
)

Tracing cell: [100-10][California][Jan][Sales][Budget]  (Cell update count: 2)
Block from FIX scope: [100-30][California]
Actual block used in calculation: [100-10][California]
Previous value: 14.00
Dependent values: 
        [100-20][California][Jan][Sales][Budget] = 140.00
New value: [100-10][California][Jan][Sales][Budget] = 14.00
Computed in lines: [91 - 93] using:
"Sales"(
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10;
)

Tracing cell: [100-10][California][Jan][Sales][Budget]  (Cell update count: 3)
Block from FIX scope: [200-10][California]
Actual block used in calculation: [100-10][California]
Previous value: 14.00
Dependent values: 
        [200-20][California][Jan][Sales][Budget] = 520.00
New value: [100-10][California][Jan][Sales][Budget] = 52.00
Computed in lines: [91 - 93] using:
"Sales"(
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10;
)

[...calc iterations 4-7 are omitted from example...]

Tracing cell: [100-10][California][Jan][Sales][Budget]  (Cell update count: 8)
Block from FIX scope: [400-30][California]
Actual block used in calculation: [100-10][California]
Previous value: 9.00
Dependent values: 
        [400-20][California][Jan][Sales][Budget] = 90.00
New value: [100-10][California][Jan][Sales][Budget] = 9.00
Computed in lines: [91 - 93] using:
"Sales"(
"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10;
)

O registro de rastreamento de cálculo fornece os seguintes insights sobre como o cálculo funcionou, na célula que foi rastreada:

  • A célula rastreada foi calculada várias vezes e o valor da célula foi substituído todas as vezes pelo novo valor (a contagem de atualização de célula reportada é interrompida em 8).

  • O valor da célula, antes do cálculo, era 840,00.

  • Para cada ocorrência de cálculo, são mostrados valores dependentes e novos valores. Os valores dependentes são provenientes da fórmula do membro na instrução FIX.

  • O valor final da célula rastreada, após todo o cálculo ser concluído, é 9, mas representa o valor do produto "400-20"->California dividido por 10.

  • As linhas 91-93 do script de cálculo, contendo uma fórmula de membro em Vendas, são responsáveis pelos valores atualizados.

Para cada um dos blocos que passaram pelo ciclo, Vendas é calculado usando a fórmula:

"100-10"=@MEMBER(@CONCATENATE(@NAME(@PARENT("Product")),"-20"))/10

A fórmula contém um membro esparso no lado esquerdo, o que pode fazer com que o bloco de cálculo real seja diferente do bloco FIX inicial. Por exemplo, quando o cálculo realiza o ciclo em "California"->"100-20", os cálculos são, de fato, realizados em "California"->"100-10".

As entradas do log de rastreamento intituladas Block from FIX scope e Actual block used in calculation só serão impressas se houver uma discrepância entre os blocos na instrução FIX e o bloco representado na fórmula do membro. Essas entradas de log podem fornecer indicações sobre por que há cálculos duplicados, ajudando você a depurar seus scripts de cálculo.