4 Replies Latest reply: Jul 6, 2017 8:26 AM by Tiago Pazeto RSS

    Performance do Dashboard

    Flavio Eduardo

      Ola,

       

      Subi um arquivo para o servidor da empresa onde eu trabalho e tive um problema de lentidão em todo o servidor, a primeira coisa que verifiquei que poderia estar causando aquela lentidão toda é que eu usei a função Now() em alguns locais do qvw ao invés de usar Today() para pegar a data atual, como inciei a pouco tempo no QlikView não conheço todos os procedimentos para aumentar a performance dos arquivos, andei pesquisando na internet e na comunidade e achei esse link Teste aplicação Qlikview

       

      Estou seguindo os passos que o Leandro Gonçalves postou, tem um em particular que eu não estava seguindo e fez uma diferença muito grande, é o item "Todos os QVD leem otimizados", eu tenho um arquivo gerador de qvd onde eu faço os cálculos mais pesados e no dashboard eu carrego os qvd's gerados e gerava chaves autonumber nas tabelas fato nele e uma linktable, essas coisas faziam a leitura não ser otimizada e os dois arquivos demoravam pra carregar mas o que mais me perturbava é que o tamanho do arquivo qvw apos as cargas ficava em torno de 90mb, movi todos os cálculos pro gerador de qvd's e a leitura no dashboard ficou otimizada, alem de demorar apenas 5 segundos pra ler todos os qvd's o tamanho do arquivo ficou em 30mb, não entendi o que fez o tamanho do arquivo cair tanto por ler qvd's sem fazer algum calculo no próprio arquivo, eu achava que apenas o tempo de recarga seria comprometido e não o tamanho do arquivo. Alguém sabe como isso acontece?

       

      Também fiquei com duvida em qual seria a melhor forma de gerar os qvd's, atualmente eu conecto no banco e já vou fazendo os cálculos conforme vou carregando as tabelas, estive pensando em carregar todas as tabelas que uso do banco em qvd e fazer os calculos usando os qvd's. Essa seria a forma mais correta para ter melhor performance?

        • Re: Performance do Dashboard
          Alessandro Furtado

          Flavio,

           

          sobre o tamanho do QVW, o Qlik ao ler cada campo, cria uma tabela com o campo unico e o simbolo que usara para "relacionar" com os dados.....

           

          2016-12-03 08_47_01-Apresentação de slides do PowerPoint - [Apresentacao Completo.pptx].png

           

          Mais em Symbol Tables and Bit-Stuffed Pointers

           

          Então, o tamanho esta relacionado a quantidade de campos e a quantidade de registros únicos.  Podemos ter um campo cidade em clientes, com mais de 1000 clientes, mas serem todos da mesma cidade. Portanto a tabela simbolo no Qlik vai ter apenas 1 linha, com o simbolo para a cidade e o valor dela (no caso o nome da cidade). A imagem acima ajuda a entender.      Ajuda a reduzir alguns macetes, por exemplo campos autonumber, ele cria sem ter a tabela simbolo (o campo sera o próprio simbolo) .  Campos datetime, cuidar para tirar o time se não usar (e neste caso o date(data,'DD/MM/YYYY')  não vai ajudar, visto que formata a apresentação e não muda o campo - no caso usar o date(floor(data))).  Claro que campos concatenados com strings (ex: Cidade & ' - ' & UF & ' - ' .....  as Chave  ) podem estar dentro de um autonumber........, campos sem uso removidos entre outros......

           

          Sobre forma de carregar informações (pdf em anexo) basicamente eu trabalho entre estas duas......

          2016-12-03 09_00_06-QlikView Data Architectures.pdf - Foxit Reader.png

           

          O que a Qlik não recomenda como boa pratica seria o Stage 1. Mas, mesmo assim pode ser usado. Vamos imaginar um modelo de RH. Você salvaria os QVDs com os dados dos funcionários e os salários?  Tem empresa que não aceita.....Então, stage 1.

           

          Sobre modelagem,

           

          A Myth about the Number of Hops

          Usar ou não o CONCATENATE???                   tem um comentario meu e do HIC que complementa o de cima....

           

          Sobre outros pontos de performance, if e aggr(),

          2016-12-03 09_06_15-Apresentação de slides do PowerPoint - [Apresentacao Completo.pptx].png

           

          e variáveis sem uso que são calculadas, short circuit, chaves sintéticas.

          Se na expressão tiver campos de tabelas diferentes – exemplo    sum(Pedido_Qtde * TabelaPreco_ValorUnitario) “poderá” criar piora na performance (terá que criar o lookup das tabelas..(join) para calcular).


          Tem muita coisa a ser visto......Aqui foram alguns pontos que considero importantes.  Mas tem mais coisas.....



          SQL Select * from BSID;


          SQL Select BUDAT,HKONT, KUNNR, BUKRS,BSCHL,BELNR,BUZEI,BLART,ZBD2T,ZFBDT,DMBTR,ZUONR,UMSKZ,BLDAT,XRAGL,HBKID,VBELN from BSID;


          a diferença entre os dois SQL são de quase 30 minutos de tempo de leitura.  Colocar sempre os campos que precisa no select ajuda o tempo de carga alem de diminuir os campos não necessários dentro do Qlik.....


          Fora algumas coisas que parecem estarem certas, mas fazendo de outra forma da um grande ganho de performance. No caso abaixo foram alguns minutos de diferença para uma pequena parte da base (a original deu um ganho de 35 minutos a menos na carga...)

          2016-12-03 09_16_30-Apresentação de slides do PowerPoint - [Apresentacao Completo.pptx].png


          2016-12-03 09_17_53-QlikView - [C__Furtado_Qlik_Farol_Apresentacao QlikDevGroup_10 Group by_Performa.png