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:
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.
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.
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.