Upload
roberto-oliveira
View
288
Download
0
Embed Size (px)
Citation preview
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
+70Canais 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á aplicadona 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 NotaFiscalvai receber os dados da tabela Empresassomente apóscarregar todos osarquivos.
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
345
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() = -1False() = 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
345
ms187187156234218
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 1Tabela 2Tabela 3Tabela 4Tabela 5 A B C D E F
A B C D E FA B C D E FA B C D E FA B C D E F
Concatenar com leitura otimizada
Tabela 5Tabela 4Tabela 3Tabela 2
AAAA
BBBB
CCC
DD E
Tabela 1 A B C D E F
Concatenar com leitura otimizada
Tabela 1Tabela 2Tabela 3Tabela 4
AAAA
BBBB
CCC
DD 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?