5 Replies Latest reply: Dec 6, 2016 5:55 AM by Flavio Eduardo RSS

    Data Island otimizado

    Flavio Eduardo

      Estou muito empenhado em otimizar ao máximo um documento que tenho do QV, hoje li este post The Impact of Data Islands on Cache and CPU | Qlikview Cookbook

       

      Como em uma aba eu uso um Data island eu fiquei preocupado quando ele disse que quando você faz uma seleção em uma lista que usa o data island todo o documento é recalculado, ele sugere usar uma variável para apenas ser recalculado o que estiver associado a essa variável ou usar um estado alternativo, esse estado alternativo eu já usei uma vez e não gostei muito porque os dados por algum motivo duplicaram, eu não pesquisei a causa disso mas a impressão que eu tenho é que ele faz uma copia dos dados que estão em estado alternativo pra esses dados não alterarem os que estão no outro estado.

       

      Segue o trecho onde ele escreve isso:

       

      "If your application is large enough that you consider this behavior to be a problem, a leaner alternative for the Currency example is to use a variable. When a variable changes, only objects that reference the variable get recalculated. Another great alternative is to put the Currency listbox in a different Alternate State."

       

      Me interessei pelo método da variável, alguém já usou esse método com data island?

        • Re: Data Island otimizado
          Flavio Eduardo

          Acabei usando um estado alternativo no listbox que usa campos do dataisland, somente isso já basta para evitar esse recalculo do arquivo como ele cita na postagem? tenho dificuldade em saber qual a diferença de fazer dessa forma e com tudo no mesmo estado, não senti diferença de performance nesse computador, talvez no servidor faça diferença.

            • Re: Data Island otimizado
              Alessandro Furtado

              Flavio, se tiver estado alternativo também é recalculado.   Abaixo uma pequena explanação. Coloquei uma imagem mostrando como fica os campos dentro do Qlik quando damos um LOAD.  E para cada campo teremos vetores com 4 possibilidades, como mostrado abaixo.

               

              2016-12-04 19_02_52-Apresentação de slides do PowerPoint - [Apresentacao Completo.pptx].png

              2016-12-04 19_03_33-Apresentação de slides do PowerPoint - [Apresentacao Completo.pptx].png

              2016-12-04 19_03_56-Apresentação de slides do PowerPoint - [Apresentacao Completo.pptx].png

               

              Mais informações podem ser obtidas aqui  (minhas fontes).....

               

              Symbol Tables and Bit-Stuffed Pointers

               

              Logical Inference and Aggregations

               

              Colors, States and State vectors

               

              The Calculation Engine

               

               

              Sobre performance do seu modelo, se usar a variável ou o estado alternativo, pelo o que voce falou, esta somente em uma aba. Ao selecionarmos algo, o Logical inference "varre" todos os campos "ajustando" os vetores, para o "motor de calculo" fazer (nas variáveis,expressões,cores,condicional de mostrar ou não,...). Outras abas não serão recalculadas, nem objetos minimizados (a não ser que no titulo tenham expressão por exemplo).

               

              Portanto se você estiver em outra aba, o fato de estar lento não sera em virtude do data island. Pode ser outros motivos.

              - Chaves sintéticas

              - AGGR nas expressões (se existe é para usarmos, mas com parcimônia.... )

              - if nas expressões (usar set analysis por exemplo)

              - expressões com 200 linhas, cheios de if.....

                            if(Opcao=1, sum(A),

                              if(Opcao=2, sum(B),

                                 if(Opcao=3,sum(C),.....

                     Sera calculado tudo e depois visto qual if mostrar.  O Qlik não é short circuit......

              - variáveis em excesso sem uso (  dica do nicolett.yuri       ).  Todos são calculados....

              - campos sem uso.....Ja vi modelos com tabela de 4 milhões de linhas que tinham esquecido e estava sem uso no modelo.....Ou seja, tomando tempo de carga e comendo RAM para nada.....

              - Substituir  campos chaves compostos por autonumber.

              - Tirar o time das datas (quando o campo data for datetime....) com floor()

              - Se o modelo for muito grande, quem sabe encadear modelos....Assim, parte pode parar em uma analise macro e outros seguirem para o detalhe, por exemplo.

               

              se ficar pensando vai vir mais alguma coisa........