Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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?
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.
Mais informações podem ser obtidas aqui (minhas fontes).....
Symbol Tables and Bit-Stuffed Pointers
Logical Inference and Aggregations
Colors, States and State vectors
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........
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.
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.
Mais informações podem ser obtidas aqui (minhas fontes).....
Symbol Tables and Bit-Stuffed Pointers
Logical Inference and Aggregations
Colors, States and State vectors
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........
Importante salientar que isto era ate a versão 11.2. Na versão 12, ainda não foi nada falado se esta igual ou o que esta diferente, visto que a versão 12 usa o motor do Sense.
Parabéns pela resposta afurtado
Muito obrigado pela resposta Alessandro