Depois de identificar os passos para otimização, edite a regra de negócios. Certifique-se de que a lógica e as condições ideais sejam especificadas para cada passo.
Considere a seguinte definição de regra de negócios, que calcula duas contas YTD e, em seguida, agrega os valores pelas dimensões Produto e Entidade:
SET UPDATECALC OFF; /* PASS 1 BEGINS*/ FIX ("BaseData","Plan","FY17", "FY17" "FY16") "BU Version_1"( IF(@ismbr("Jan")) "4110_YTD" = "4110"; "4120_YTD" = "4120"; "4130_YTD" = "4130"; "4140_YTD" = "4140"; "4150_YTD" = "4150"; Else "4110_YTD"="4110" + @prior("4110_YTD"); "4120_YTD"="4120" + @prior("4120_YTD"); "4130_YTD"="4130" + @prior("4130_YTD"); "4140_YTD"="4140" + @prior("4140_YTD"); "4150_YTD"="4150" + @prior("4150_YTD"); Endif) /* PASS 1 ENDS -- PASS 2 BEGINS*/ Agg("Entity","Product"); /* PASS 2 ENDS */ ENDFIX
Ao executar essa regra no Calculation Manager (consulte Identificação de Áreas para Otimização de Regra), a guia Mensagem de Log mostra uma mensagem semelhante à seguinte quando Somente Aprovados é selecionada:
Um análise das informações no arquivo de log indica que 99,995% do tempo de execução (79.235 segundos) é gasto na aprovação 1 e apenas 0,005% é gasto na aprovação 2.
Se você desmarcar a opção Somente Aprovados, informações de bloqueios, leitura e gravação semelhantes às mostradas na ilustração a seguir serão exibidas:
A definição de regra anterior apresenta estes problemas:
Não existe um FIX nas dimensões Entidade e Produto, o que força todas as regras a serem executadas em todos os níveis das dimensões Entidade e Produto.
A aprovação 1 calcula sem necessidade os níveis superiores. A função Agg na aprovação 2 faz isso e substitui o que é feito na aprovação 1.
O script pode ser otimizado como se segue:
SET UPDATECALC OFF; FIX ("BaseData","Plan","FY17") /* PASS 1 BEGINS*/ Fix(@LEVMBRS("Entity",0), @LEVMBRS("Product",0)) "BU Version_1"( IF(@ismbr("Jan")) "4110_YTD" = "4110"; "4120_YTD" = "4120"; Else "4110_YTD"="4110" + @prior("4110_YTD"); "4120_YTD"="4120" + @prior("4120_YTD"); Endif) ENDFIX /* PASS 1 ENDS -- PASS 2 BEGINS*/ Agg("Entity","Product"); /* PASS 2 ENDS */ ENDFIX
Na execução da regra atualizada no Calculation Manager (consulte Identificação de Áreas para Otimização de Regra), a guia Mensagem de Log mostra uma mensagem semelhante à seguinte:
Uma análise das informações no arquivo de log indica que o tempo de execução na aprovação 1 foi 15.901 segundos a menos em comparação com a execução anterior.
Se você desmarcar Somente Aprovados, as informações de bloqueios, leitura e gravação semelhantes às mostradas na seguinte ilustração serão exibidas para a aprovação 1
Uma comparação das informações de bloqueios, leitura e gravação com dados semelhantes da pré-otimização indica uma redução geral nas estatísticas de processamento da regra de negócios.