Cálculos de Diagnóstico

Utilize o diagnóstico de cálculo do Essbase para obter insights sobre o processamento das fórmulas de membros, ajudando-o a depurar e a aperfeiçoar os seus scripts de cálculo de armazenamento em blocos. Ative CALCTRACE para o diagnóstico de cálculo do Smart View sensível ao contexto ou utilize o comando SET TRACE para selecionar interseções de dados a diagnosticar.

O diagnóstico do cálculo permite-lhe aceder a informações registadas sobre um cálculo, após o script de cálculo efetuar uma execução com êxito em relação a um cubo.

O diagnóstico de um cálculo não altera nenhum aspeto do comportamento do cálculo. Se um cálculo for iniciado no Smart View, e um administrador tiver ativado o diagnóstico do cálculo no servidor ligado, o Smart View apresenta uma caixa de diálogo sobreposta com detalhes, após a execução do cálculo. As informações sobre o diagnóstico do cálculo podem ser coladas a partir da caixa de diálogo sobreposta num editor de texto. Em alternativa, pode encontrar as mesmas informações em calc_trace.txt, localizado no diretório de ficheiros de base de dados no Essbase.

As informações sobre o diagnóstico do cálculo podem ajudar a depurar a execução de scripts de cálculo, na eventualidade de os resultados do cálculo não serem os esperados.

O diagnóstico do cálculo não é suportado em aplicações com a gestão de cenários ativada.

Para ativar o diagnóstico do cálculo, o administrador deve primeiro ativar o parâmetro de configuração da aplicação CALCTRACE. Após o diagnóstico de cálculo ser ativado para a sua aplicação, existem duas formas de tirar partido deste:

  • No Smart View, pode utilizar diagnóstico sensível ao contexto para um único valor da célula.
    1. No Smart View, ligue uma folha de consulta à aplicação para a qual ativou o diagnóstico de cálculo.
    2. Destaque uma célula de dados cujo valor calculado gostaria de diagnosticar.
    3. Na secção Dados do separador Essbase, clique no botão Calcular e selecione um script de cálculo para executar. Irá ver o ponto de vista da sua célula de dados destacado nos prompts em runtime do membro do diagnóstico.
    4. Clique em Lançar para executar o script de cálculo.

      O âmbito de cálculo completo, conforme consta do script, será calculado, mas apenas o contexto da célula de dados destacada será diagnosticado durante o cálculo.

    5. No fim do script de cálculo, examine a caixa de diálogo Resultado do Cálculo, que mostra os resultados pré e pós-cálculo para a sua célula de dados destacada.

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

  • Nos scripts de cálculo, pode utilizar o comando do cálculo SET TRACE para selecionar intersecções de dados a diagnosticar. O comando SET TRACE permite-lhe diagnosticar várias células de dados. Adicionalmente, pode diagnosticar secções de scripts de cálculo utilizando uma combinação de SET TRACE mbrList (para ativar o diagnóstico do cálculo numa lista de membros) e SET TRACE OFF (para desativar o diagnóstico do cálculo até que seja encontrado um novo SET TRACE no script. Para utilizar o comando SET TRACE, deve executar o script de cálculo fora do Smart View, utilizando o Cube Designer, comando calc da CLI, uma tarefa Executar Cálculo na interface web do Essbase ou MaxL (instrução executar cálculo).

O script de cálculo seguinte é executado no Sample Basic. O script inclui um comando SET TRACE, ao solicitar que sejam registadas informações detalhadas para a interseção de dados (célula) que representa as vendas orçamentadas de janeiro, no mercado californiano, para o SKU de produto número 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:

É também recomendado o comando SET TRACEID, para impedir que o seu ficheiro de diagnóstico de cálculo seja substituído.

O Sample Basic tem duas dimensões dispersas: Produto e Mercado. A fórmula do membro está em Sales, um membro de Measures, que é uma dimensão densa. A lista de membros da instrução FIX apenas contém um membro disperso, California, que pertence à dimensão Market.

O número de blocos existentes no âmbito FIX determina o número de vezes que a célula diagnosticada é calculada. Neste exemplo, o cálculo efetua o ciclo por todas as combinações de membros dispersos existentes de California. Cada uma destas combinações representa um bloco.

Após a conclusão do cálculo, são registadas e apresentadas as seguintes informações de diagnóstico 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 diário de diagnóstico do cálculo fornece as seguintes informações sobre o funcionamento do cálculo, na célula que foi diagnosticada:

  • A célula diagnosticada foi calculada várias vezes e o valor da célula foi substituído cada vez com a nova regra (a contagem de atualização da célula comunicada para em 8).

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

  • Para cada ocorrência do cálculo, são apresentados valores dependentes e valores novos. Os valores dependentes têm origem na fórmula do membro na instrução FIX.

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

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

Para cada um dos blocos onde passou o ciclo, o valor Sales é calculado através da fórmula:

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

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

As entradas no diário de diagnóstico denominadas Block from FIX scope e Actual block used in calculation só são impressas se existir uma discrepância entre os blocos na instrução FIX e o bloco representado na fórmula do membro. Estas entradas no diário podem fornecer indicações para a existência de cálculos duplicados, o que ajuda a depurar os scripts de cálculo.