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