Otimização de Regras: Um Exemplo

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:
Exemplo de Mensagem Exibida na Execução de uma Regra com a Seleção da Opção Somente Aprovados

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:
Exemplo de Mensagem Exibida na Execução de uma Regra sem a Seleção da Opção Somente Aprovados

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:


Exemplo de Mensagem Exibida na Execução de uma Regra Fixa

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
Exemplo de Mensagem Exibida na Execução de uma Regra Fixa sem a Opção Somente Aprovados

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.