QMeeting 2015
Pequenos erros, grandes problemas!
Yuri Nicolett
A Qlik Technologies Inc. não é patrocinadora
deste evento e não é responsável por qualquer
conteúdo ou informação oferecida, este evento
foi organizado pelos integrantes da comunidade
de desenvolvedores Qlik e parceiros que desejam
debater as melhores práticas com a plataforma e
estreitar o relacionamento profissional.
05Unidades
SP, DF, PE, RS, SA
+70
Canais e Alianças
04
Premiações Qlik
10 ANOS
• Especialista em Segurança da Informação
• Especialista Qlik
• Autor do Blog: blogdonicolett.com.br
• Qlik MVP 2015
Sua aplicação esta lenta? (Qlik-Wait-View)
Sua aplicação faz o QvServer reiniciar?
Os dados estão errados e você não sabe como?
Uso do DISTINCT em união de tabelas.
Uso do DISTINCT em união de tabelas
Uso do DISTINCT em união de tabelas
900
750
Uso do DISTINCT em união de tabelas
Uso do DISTINCT em união de tabelas
E se….
O comportamento do
DISTINCT será aplicado
na tabela final que a
união resultará.
Leitura de múltiplos arquivos em união de
tabelas.
Leitura de múltiplos arquivos em união de tabelas
Leitura de múltiplos arquivos em união de tabelas
E se….
Adicionarmos o nome da empresa?
Leitura de múltiplos arquivos em união de tabelas
E se…. Adicionarmos o nome da empresa?
Leitura de múltiplos arquivos em união de tabelas
E se…. A união ficará
correta, pois a
tabela NotaFiscal
vai receber os dados
da tabela Empresas
somente após
carregar todos os
arquivos.
Qual dessas expressões apresenta o
melhor desempenho?
SUM({$<Flag_True_or_False = {'-1'}>} Valor)
SUM({$<Flag_True_or_Null = {'-1'}>} Valor)
SUM({$<Valor = {'<=0,6000'}>} Valor)
SUM(if( Valor<=0.6000, Valor))
SUM(Valor*Flag_True_or_False)
1
2
3
4
5
Expressões booleanas são melhores que
flags.
Expressões booleanas são melhores que flags
Em ciência da computação, booleano é um tipo
de dado primitivo que possui dois valores, que
podem ser considerados como 1 ou 0, falso ou
verdadeiro.
Wikipédia
Expressões booleanas são melhores que flags
Cenário…
True() = -1
False() = 0
Qual dessas expressões apresenta o
melhor desempenho?
SUM({$<Flag_True_or_False = {'-1'}>} Valor)
SUM({$<Flag_True_or_Null = {'-1'}>} Valor)
SUM({$<Valor = {'<=0,6000'}>} Valor)
SUM(if( Valor<=0.6000, Valor))
SUM(Valor*Flag_True_or_False)
1
2
3
4
5
ms
187
187
156
234
218
Leitura Otimizada de QVD
Leitura Otimizada de QVD
Transformações
Permitidas
Renomear campos
DISTINCT
Exists
OMIT
Concatenate
Transformações
Não Permitidas
JOIN
Agregar campos
Condições Where
Funções
Concatenar com leitura otimizada
Concatenar com leitura otimizada
Tabela 1
Tabela 2
Tabela 3
Tabela 4
Tabela 5 A B C D E F
A B C D E F
A B C D E F
A B C D E F
A B C D E F
Concatenar com leitura otimizada
Tabela 5
Tabela 4
Tabela 3
Tabela 2
A
A
A
A
B
B
B
B
C
C
C
D
D E
Tabela 1 A B C D E F
Concatenar com leitura otimizada
Tabela 1
Tabela 2
Tabela 3
Tabela 4
A
A
A
A
B
B
B
B
C
C
C
D
D E
Tabela 5 A B C D E F
Concatenar com leitura otimizada
Cenário…
Leitura Otimizada
Leitura Otimizada
Leitura não otimizada de um registro
Leitura Otimizada
Se isso, senão aquilo...
Se isso, senão aquilo...
Ou…
Se isso, senão aquilo...
Possíveis soluções – Condicional da Expressão
Se isso, senão aquilo...
Possíveis soluções – Expansão do sinal de dólar
Se isso, senão aquilo...
Possíveis soluções – Expansão do sinal de dólar
Se isso, senão aquilo...
Possíveis soluções – Expansão do sinal de dólar
Como devem ser minhas chaves?
Como devem ser minhas chaves?
Concatenadas?
Hash?
Como devem ser minhas chaves?
A Tabela de Símbolos
Como devem ser minhas chaves?
A Tabela de Símbolos - Características
1. Será criada uma tabela de símbolos por coluna carregada
2. Uma linha para cada valor distinto
3. O ponteiro possui a quantidade mínima necessária de bits (de
acordo com seu tamanho)
Como devem ser minhas chaves?
O que faz a tabela de símbolos crescer?
1. A quantidade de colunas
2. A quantidade de linhas não distintas
3. O tamanho dos valores/strings
Como devem ser minhas chaves?
Concatenadas?
Hash?
USE CHAVES CONCATENADAS APENAS
NO DESENVOLVIMENTO PARA FACILITAR
A VALIDAÇÃO DOS DADOS!
HASH DEVE SER CRIADO NA APLICAÇÃO
FINAL.
Sua aplicação esta lenta? (Qlik-Wait-View)
Sua aplicação faz o QvServer reiniciar?
Os dados estão errados e você não sabe como?
1. Mantenha a Calma!
2. Remova colunas não utilizadas
5. Identifique e melhore expressões pesadas
8. Verifique o tipo de chaveamento
9. Campos distintos
10. Identifique variáveis iniciadas com o sinal de igual
3. Remova dimensões calculadas
4. Identifique melhorias de modelagem
6. Crie condicionais de cálculos/pré filtros.
7. Verifique o número de gráficos ativos na mesma tela
Mas perai...
Afinal, Macros são ruins?
Obrigado!
Yuri.nicolett@gmail.com
Skype: yurinicolett

Qmeeting Pequenos_erros_grandes_problemas_Yuri

  • 1.
    QMeeting 2015 Pequenos erros,grandes problemas! Yuri Nicolett
  • 2.
    A Qlik TechnologiesInc. não é patrocinadora deste evento e não é responsável por qualquer conteúdo ou informação oferecida, este evento foi organizado pelos integrantes da comunidade de desenvolvedores Qlik e parceiros que desejam debater as melhores práticas com a plataforma e estreitar o relacionamento profissional.
  • 3.
    05Unidades SP, DF, PE,RS, SA +70 Canais e Alianças 04 Premiações Qlik 10 ANOS
  • 4.
    • Especialista emSegurança da Informação • Especialista Qlik • Autor do Blog: blogdonicolett.com.br • Qlik MVP 2015
  • 5.
    Sua aplicação estalenta? (Qlik-Wait-View) Sua aplicação faz o QvServer reiniciar? Os dados estão errados e você não sabe como?
  • 6.
    Uso do DISTINCTem união de tabelas.
  • 7.
    Uso do DISTINCTem união de tabelas
  • 8.
    Uso do DISTINCTem união de tabelas 900 750
  • 9.
    Uso do DISTINCTem união de tabelas
  • 10.
    Uso do DISTINCTem união de tabelas E se…. O comportamento do DISTINCT será aplicado na tabela final que a união resultará.
  • 11.
    Leitura de múltiplosarquivos em união de tabelas.
  • 12.
    Leitura de múltiplosarquivos em união de tabelas
  • 13.
    Leitura de múltiplosarquivos em união de tabelas E se…. Adicionarmos o nome da empresa?
  • 14.
    Leitura de múltiplosarquivos em união de tabelas E se…. Adicionarmos o nome da empresa?
  • 15.
    Leitura de múltiplosarquivos em união de tabelas E se…. A união ficará correta, pois a tabela NotaFiscal vai receber os dados da tabela Empresas somente após carregar todos os arquivos.
  • 16.
    Qual dessas expressõesapresenta o melhor desempenho? SUM({$<Flag_True_or_False = {'-1'}>} Valor) SUM({$<Flag_True_or_Null = {'-1'}>} Valor) SUM({$<Valor = {'<=0,6000'}>} Valor) SUM(if( Valor<=0.6000, Valor)) SUM(Valor*Flag_True_or_False) 1 2 3 4 5
  • 17.
    Expressões booleanas sãomelhores que flags.
  • 18.
    Expressões booleanas sãomelhores que flags Em ciência da computação, booleano é um tipo de dado primitivo que possui dois valores, que podem ser considerados como 1 ou 0, falso ou verdadeiro. Wikipédia
  • 19.
    Expressões booleanas sãomelhores que flags Cenário… True() = -1 False() = 0
  • 20.
    Qual dessas expressõesapresenta o melhor desempenho? SUM({$<Flag_True_or_False = {'-1'}>} Valor) SUM({$<Flag_True_or_Null = {'-1'}>} Valor) SUM({$<Valor = {'<=0,6000'}>} Valor) SUM(if( Valor<=0.6000, Valor)) SUM(Valor*Flag_True_or_False) 1 2 3 4 5 ms 187 187 156 234 218
  • 21.
  • 22.
    Leitura Otimizada deQVD Transformações Permitidas Renomear campos DISTINCT Exists OMIT Concatenate Transformações Não Permitidas JOIN Agregar campos Condições Where Funções
  • 23.
  • 24.
    Concatenar com leituraotimizada Tabela 1 Tabela 2 Tabela 3 Tabela 4 Tabela 5 A B C D E F A B C D E F A B C D E F A B C D E F A B C D E F
  • 25.
    Concatenar com leituraotimizada Tabela 5 Tabela 4 Tabela 3 Tabela 2 A A A A B B B B C C C D D E Tabela 1 A B C D E F
  • 26.
    Concatenar com leituraotimizada Tabela 1 Tabela 2 Tabela 3 Tabela 4 A A A A B B B B C C C D D E Tabela 5 A B C D E F
  • 27.
    Concatenar com leituraotimizada Cenário… Leitura Otimizada Leitura Otimizada Leitura não otimizada de um registro Leitura Otimizada
  • 28.
    Se isso, senãoaquilo...
  • 29.
    Se isso, senãoaquilo... Ou…
  • 30.
    Se isso, senãoaquilo... Possíveis soluções – Condicional da Expressão
  • 31.
    Se isso, senãoaquilo... Possíveis soluções – Expansão do sinal de dólar
  • 32.
    Se isso, senãoaquilo... Possíveis soluções – Expansão do sinal de dólar
  • 33.
    Se isso, senãoaquilo... Possíveis soluções – Expansão do sinal de dólar
  • 34.
    Como devem serminhas chaves?
  • 35.
    Como devem serminhas chaves? Concatenadas? Hash?
  • 36.
    Como devem serminhas chaves? A Tabela de Símbolos
  • 37.
    Como devem serminhas chaves? A Tabela de Símbolos - Características 1. Será criada uma tabela de símbolos por coluna carregada 2. Uma linha para cada valor distinto 3. O ponteiro possui a quantidade mínima necessária de bits (de acordo com seu tamanho)
  • 38.
    Como devem serminhas chaves? O que faz a tabela de símbolos crescer? 1. A quantidade de colunas 2. A quantidade de linhas não distintas 3. O tamanho dos valores/strings
  • 39.
    Como devem serminhas chaves? Concatenadas? Hash? USE CHAVES CONCATENADAS APENAS NO DESENVOLVIMENTO PARA FACILITAR A VALIDAÇÃO DOS DADOS! HASH DEVE SER CRIADO NA APLICAÇÃO FINAL.
  • 40.
    Sua aplicação estalenta? (Qlik-Wait-View) Sua aplicação faz o QvServer reiniciar? Os dados estão errados e você não sabe como?
  • 41.
    1. Mantenha aCalma! 2. Remova colunas não utilizadas 5. Identifique e melhore expressões pesadas 8. Verifique o tipo de chaveamento 9. Campos distintos 10. Identifique variáveis iniciadas com o sinal de igual 3. Remova dimensões calculadas 4. Identifique melhorias de modelagem 6. Crie condicionais de cálculos/pré filtros. 7. Verifique o número de gráficos ativos na mesma tela
  • 42.
  • 43.