43
QMeeting 2015 Pequenos erros, grandes problemas! Yuri Nicolett

Qmeeting Pequenos_erros_grandes_problemas_Yuri

Embed Size (px)

Citation preview

Page 1: Qmeeting Pequenos_erros_grandes_problemas_Yuri

QMeeting 2015

Pequenos erros, grandes problemas!Yuri Nicolett

Page 2: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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.

Page 3: Qmeeting Pequenos_erros_grandes_problemas_Yuri

05Unidades

SP, DF, PE, RS, SA

+70Canais e Alianças

04 Premiações Qlik

10 ANOS

Page 4: Qmeeting Pequenos_erros_grandes_problemas_Yuri

• Especialista em Segurança da Informação

• Especialista Qlik

• Autor do Blog: blogdonicolett.com.br

• Qlik MVP 2015

Page 5: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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?

Page 6: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Uso do DISTINCT em união de tabelas.

Page 7: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Uso do DISTINCT em união de tabelas

Page 8: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Uso do DISTINCT em união de tabelas

900

750

Page 9: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Uso do DISTINCT em união de tabelas

Page 10: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Uso do DISTINCT em união de tabelas

E se….

O comportamento do DISTINCT será aplicadona tabela final que a união resultará.

Page 11: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Leitura de múltiplos arquivos em união de tabelas.

Page 12: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Leitura de múltiplos arquivos em união de tabelas

Page 13: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Leitura de múltiplos arquivos em união de tabelas

E se….Adicionarmos o nome da empresa?

Page 14: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Leitura de múltiplos arquivos em união de tabelas

E se…. Adicionarmos o nome da empresa?

Page 15: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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.

Page 16: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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

Page 17: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Expressões booleanas são melhores que flags.

Page 18: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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

Page 19: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Expressões booleanas são melhores que flags

Cenário…

True() = -1False() = 0

Page 20: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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

Page 21: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Leitura Otimizada de QVD

Page 22: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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

Page 23: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Concatenar com leitura otimizada

Page 24: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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

Page 25: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Concatenar com leitura otimizada

Tabela 5Tabela 4Tabela 3Tabela 2

AAAA

BBBB

CCC

DD E

Tabela 1 A B C D E F

Page 26: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Concatenar com leitura otimizada

Tabela 1Tabela 2Tabela 3Tabela 4

AAAA

BBBB

CCC

DD E

Tabela 5 A B C D E F

Page 27: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Concatenar com leitura otimizada

Cenário…

Leitura Otimizada

Leitura Otimizada

Leitura não otimizada de um registro

Leitura Otimizada

Page 28: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Se isso, senão aquilo...

Page 29: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Se isso, senão aquilo...

Ou…

Page 30: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Se isso, senão aquilo...

Possíveis soluções – Condicional da Expressão

Page 31: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Se isso, senão aquilo...

Possíveis soluções – Expansão do sinal de dólar

Page 32: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Se isso, senão aquilo...

Possíveis soluções – Expansão do sinal de dólar

Page 33: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Se isso, senão aquilo...

Possíveis soluções – Expansão do sinal de dólar

Page 34: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Como devem ser minhas chaves?

Page 35: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Como devem ser minhas chaves?

Concatenadas?

Hash?

Page 36: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Como devem ser minhas chaves?

A Tabela de Símbolos

Page 37: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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)

Page 38: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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

Page 39: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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.

Page 40: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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?

Page 41: Qmeeting Pequenos_erros_grandes_problemas_Yuri

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

Page 42: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Mas perai...Afinal, Macros são ruins?

Page 43: Qmeeting Pequenos_erros_grandes_problemas_Yuri

Obrigado!

[email protected]: yurinicolett