20 Replies Latest reply: Nov 12, 2014 9:58 AM by Pablo Labbe RSS

    Dica de Desempenho servidor

    Hamilton Junior

      Boa tarde, começo com a configuração do meu servidor:

      Xeon 2.40GHz com 8 núcleos

      32GB RAM

      Server 2008

       

      Tenho um projeto do qual contém mais ou menos 90 a 100 variáveis com cálculos dentro delas.

      Por exemplo, na var_Venda eu tinha o codigo =sum(venda) agora eu alterei para sum(venda).

       

      Nesta alteração eu retirei o sinal de igual, isto me permite utilizar a variável em um gráfico =($var_Venda), dessa forma consigo trabalhar com dimensões. A questão é que pela quantidade de cálculos que meu projeto faz, a cada seleção o processador da pico em 100% e fica até finalizar a seleção, da forma antiga o projeto era bem mais rápido, porém eu perco a facilidade de usar variáveis em gráficos.

       

      O que me dizem a respeito disso? Será que é necessário um upgrade na máquina ou não devo me preocupar com isto?

        • Re: Dica de Desempenho servidor
          Pablo Labbe

          Olá Hamilton,

           

            Qual a versão do seu Qlikview Server ?

          • Re: Dica de Desempenho servidor
            Pablo Labbe

            Achei estes dois blogs que explicam que não há muita diferença em usar formulas em varíaveis ou diretamente nas expressões.

             

            Seu problema parece ser outro.

             

            Testing the performance implications of variables and label referencing versus direct expressions - The Qlik Fix! The Q…

             

            http://www.naturalsynergies.com/q-tip-6-those-tricky-sign-expansions/

             

            Abraço,

            Pablo Labbe

              • Re: Dica de Desempenho servidor
                Hamilton Junior

                Bom dia Pablo, a versão do server é a 11.0.11440.0.

                Vou ler os links que você me mandou, porém tenho duas versões do projeto e a primeira a consulta é consideravelmente mais rápida.

                • Re: Dica de Desempenho servidor
                  Hamilton Junior

                  Pablo, fiz o teste como mostra em um dos sites que você mandou e a diferença foi bem significativa, veja o que me diz. O Comparativo Original é a primeira forma de eu usar a variável =var_venda, o Comparativo Beta é a variável no formato novo $(=var_venda)

                   

                  Resultado nos Objetos de Texto

                  Objeto Texto.png

                   

                  Resultado das Variáveis

                  Variaveis.png

                   

                  Media:

                  media.png

                    • Re: Dica de Desempenho servidor
                      Fernando Suzuki

                      Hamilton,

                       

                      posso estar enganado, mas entendo que existe uma diferença em cada abordagem.

                       

                      Quando na variável você coloca '=Sum(Venda)', o QlikView primeiro avalia a variável (a cada mudança no estado das seleções), guarda o resultado e copia este resultado nos lugares onde vc usa a expansão de dólar. Então o QV faz uma espécie de pré-cálculo.

                       

                      Agora quando na variável você coloca 'Sum(Venda)', sem o igual, o QlikView guarda apenas a fórmula, e quando você usa a expansão de dólar, o QV primeiro troca a variável pela fórmula e depois calcula ela.

                       

                      Então, faz sentido que nos seus testes a primeira opção "Original" tenha sido mais rápida, já que há um pré-cálculo.

                       

                      Dependendo de como você está criando seus objetos, o resultado também poderá ser diferente. Por exemplo em uma tabela simples com uma dimensão, a variável com '=Sum(Venda)' vai mostrar um mesmo número para todas as linhas, e a variável com 'Sum(Venda)' vai avaliar a fórmula para cada item da dimensão.

                       

                      Edit: Acho que nas referências que o pablolabbe comentou, eles não comentam sobre a opção da variável com o sinal de igual na frente, pois conceitualmente ele dá um resultado diferente (como no meu exemplo acima).

                        • Re: Re: Dica de Desempenho servidor
                          Hamilton Junior

                          Bom dia Fernando, realmente é isto mesmo que acontece, quando usado o sinal de Dolar o sistema refaz o cálculo para cada campo, no meu caso são vários pois eu montei um layout baseado em objeto texto (pelo menos 170). Por isto a impressão que demora mais para carregar na tela do usuário, porém analisando o ultimo gráfico, na média compensa esta utilização.

                           

                          Agora eu fiz o teste em meu desktop comum como o Pablo sugeriu, um Core I5 com 4GB de RAM.

                          Por mais que nos gráficos digam que o projeto BETA foi mais rápido em cálculo na média, ficou impossível trabalhar, utilizou toda a memória da maquina e a cada seleção tive que esperar muito tempo até destravar, sendo que o ORIGINAL foi "navegável".

                          Tendo em vista que os gráficos contradizem a experiência do usuário pelo projeto, fica difícil fazer uma análise concreta, ao menos eu estou confuso entre os dados e a realidade.

                           

                          Objeto Texto:

                          Objeto Texto 2.png

                           

                          Variáveis:

                          variaveis 2.png

                           

                          Média:

                          media media.png

                    • Re: Dica de Desempenho servidor
                      Pablo Labbe

                      Hamilton,

                       

                      Resultados interessantes, meio que contradizem o que se falou nos blogs, mas é importante considerar o ambiente em que você está fazendo o teste.

                       

                      Sua versão do Qlikview é bem antiga. Tem como você baixar a ultima versão do Qlikview (11.2 SR7 ou SR8) e refazer os testes ?

                       

                        Você está testando em um desktop ou via remoto no servidor ? Se for no servidor, ele é físico ou virtualizado ?

                       

                      Abraço,

                       

                      pablolabbe

                      • Re: Dica de Desempenho servidor
                        Pablo Labbe

                        Você pode mandar um print da tela para termos um ideia do layout que está sendo calculado ?

                          • Re: Re: Dica de Desempenho servidor
                            Hamilton Junior

                            Boa tarde,

                            segue minha tela, não achei como fazer um resumo que fique visualmente agradável para o usuário se não usar os painéis de texto.

                            Dentro de cada um tem =$(=var_variavel) contendo uma série de cálculos em cada. O RESULTADO é a soma e subtração das variáveis. Antes de usar o sinal de Dolar, era impossível eu ter um gráfico de RESULTADO com a dimensão id_unidade, agora eu consigo colocar =$(=var_Resultado) e o sistema refaz todos os cálculos em cada posição.

                             

                            print orcamento.png

                              • Re: Re: Dica de Desempenho servidor
                                Yuri Nicolett

                                Interessante os testes!

                                 

                                Tome sempre cuidado ao utilizar objeto de texto, na maioria dos casos a performance fica muito baixa. Quando crio uma tela de resultados, como a sua, tento resolver a maioria dos cálculos dentro do script da aplicação.

                                • Re: Re: Dica de Desempenho servidor
                                  Fernando Suzuki

                                  Hamilton,

                                   

                                  segue um link de um exemplo de Demonstrativo de Resultado, acho que é uma maneira elegante de fazer uma coisa similar. Fica a dica pra próxima...

                                   

                                  How to Create a Profit and Loss Statement in QlikView

                                  • Re: Re: Dica de Desempenho servidor
                                    Pablo Labbe

                                    As vezes, na tentativa de criar layouts semelhantes ao que o usuário tem em excel, acabamos criando complexidade no layout que impacta em manutenção e performance.

                                     

                                    Em Qlikview menos é mais, então se você pre-calcular essas linhas em script melhor. Outra dica é simplificar o layout usando tabelas. Segue um exemplo de uma app que criei.

                                     

                                    Tabelas Qlikview.PNG.png

                                      Aqui usei um truque, O quadro comparativo é formado por 1 tabelas simples. Configurei a apresentação da tabela como Horizontal, isto fez uma transposição colocando as expressões nas linhas. Cada linha é uma expressão e as coluna são 3 itens de uma dimensão virtual criada com valuelist:

                                     

                                    Dimension

                                    =ValueList('Tecnico','Executivo','Real')

                                     

                                    E para cada expressão eu tenho a formula abaixo que usa uma expressão diferente conforme o item de dimensão:

                                     

                                    pick(match(ValueList('Tecnico','Executivo','Real'),'Tecnico','Executivo','Real'),

                                    $(vReceitaOperacionalT),

                                    $(vReceitaOperacionalE),

                                    $(vReceitaOperacionalR)

                                    )

                                     

                                    Com isso consegui criar uma tabela de comparação de resultados com um única objeto.

                                     

                                    As tabelas acima relacionando % seguem o mesmo principio.

                                     

                                    Abraço,

                                    pablolabbe

                                • Re: Dica de Desempenho servidor
                                  Pablo Labbe

                                  Hamilton,

                                   

                                     Avaliando melhor o seu caso, entendo que onde um objeto mostra valor únicos, isto é, não existe uma dimensão para iteração, usar o = dentro da variável não traz prejuízo ao resultado do cálculo e é até mais performático que não usar o =. Neste caso sugiro deixar o = dentro da variável.

                                   

                                    Como explicado anteriormente pelo fosuzuki  você deve remover o =  quando usa a variável dentro de gráficos que contem dimensões, assim ele avalia a expressão a cada item das dimensões.

                                   

                                    Existe também uma questão de avaliar o desenho da aplicação pois 170 objetos em uma única aba é muita coisa. Vai demorar para calcular.  A prática é sempre minimizar o numero de objetos visíveis ao mesmo tempo.

                                   

                                   

                                   

                                   

                                  pablolabbe

                                    • Re: Dica de Desempenho servidor
                                      Hamilton Junior

                                      Pablo,

                                       

                                      eu preciso calcular RECEITA LIQUIDA, MARGEM e RESULTADO por unidade, caso eu deixe o = dentro da variável eu perco esta funcionalidade.

                                       

                                      Referente ao desenho, não consegui imaginar nada que fique agradável que não seja este formato, mesmo que eu coloque um gráfico do tipo Tabela, acredito que não vai ser amigável.

                                    • Re: Dica de Desempenho servidor
                                      Pablo Labbe

                                      E se deixar o = somente nestes 3 indicadores, já não resolve o seu problema ?