Qmeeting Pequenos_erros_grandes_problemas_Yuri

Preview:

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?

Obrigado!

Yuri.nicolett@gmail.comSkype: yurinicolett