Skip to main content
Announcements
YOUR OPINION MATTERS! Please take the Qlik Experience survey you received via email. Survey ends June 14.
cancel
Showing results for 
Search instead for 
Did you mean: 
AndersonOberdan
Contributor II
Contributor II

Filtrando Dados na carga QVD (Where)

Bom dia pessoal

Estou fazendo a leitura de um arquivo QVD que possui cerca de 50 milhões de registros. Se eu fizer a leitura "simples" ela acontece super rápido (menos de 1 minuto) porém quando uso a restrição "Where" para deixar de carregar os registros que não preciso a carga demora mais de 5 minutos. 

Obviamente que isto deve acontecer porque o QVD não deve ser Indexado. Porém existe alguma forma de contornar isso?

Abraço a todos!

Labels (1)
  • Other

1 Solution

Accepted Solutions
fernando_tonial
Employee
Employee

Olá Anderson,

Na grande maiorias das cláusulas Where a leitura do QVD deixa de ser otimizada, para que continuem otimizada você pode utilizar o comando Exists(), com este comando normalmente a carga permanece otimizada.

Faça o teste por ai.

Don't Worry, be Qlik.

Tonial.

Don't Worry, be Qlik.

View solution in original post

8 Replies
felipedl
Partner - Specialist III
Partner - Specialist III

Olá Anderson,

Isso é uma questão de como o Qlik trata a carga, como não são feitos filtros ou cálculos durante a carga do QVD, ele virá otimizado, sendo mais rápido.

Com a cláusula where irá deixar de ter essa performance otimizada, não sendo a questão de indexação.

O que você pode realizar é guardar todos os dados uma vez (processo de extração), depois realizar a transformação dos dados (cálculos e afins) e depois carregar os dados tratados para o aplicativo final.

Em cada etapa intermediária: Extração -> Transformação -> Aplicativo, serão salvos os QVDs, para que o aplicativo final apenas leia os arquivos transformados, assim melhorando a performance já que não é realizado nehum filtro ou cálculo.

Felipe.

fernando_tonial
Employee
Employee

Olá Anderson,

Na grande maiorias das cláusulas Where a leitura do QVD deixa de ser otimizada, para que continuem otimizada você pode utilizar o comando Exists(), com este comando normalmente a carga permanece otimizada.

Faça o teste por ai.

Don't Worry, be Qlik.

Tonial.

Don't Worry, be Qlik.
Marcio_Campestrini
Specialist
Specialist

Olá Anderson

Lembrando que o Exists deve ser simples, do tipo Exists(Campo). Outro exists não vai gerar leitura otimizada.

Para isso, crie anteriormente uma tabela de restrição.

Restricao:

Load * Inline [

Empresa

1 ];

Dados:

Load * From <seu arquivo>.qvd (qvd) Where Exists Empresa;

Drop table Restricao;

Márcio Rodrigo Campestrini
AndersonOberdan
Contributor II
Contributor II
Author

Boa tarde Márcio

Entedi. Porém eu obviamente posso usar também "Not Exists()" ?

Marcio_Campestrini
Specialist
Specialist

Anderson, eu acho que não funciona com o not exists...

On Fri, Aug 18, 2017 at 3:44 PM Anderson Oberdan <qcwebmaster@qlikview.com>

Márcio Rodrigo Campestrini
Marcio_Campestrini
Specialist
Specialist

O problema foi resolvido? Se sim, marque as respostas úteis/correta para encerrar o tópico e ajudar a manter a comunidade organizada.

Márcio Rodrigo Campestrini
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Para apoio;

Referência (Tópicos 2.3 e 2.4): Manual do usu&amp;amp;aacute;rio | Como criar e gerir minhas perguntas?

Abraço.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
AndersonOberdan
Contributor II
Contributor II
Author

Desculpem estava sem tempo pra testar, porém hoje verifiquei que as respostas do Márcio e do Fernando ajudaram a resolver meu problema. 

Fiz a carga da primeira tabela apenas com a relação de empresas que preciso buscar os dados. E nas demais cargas (movimento) usei a restrição "Where Exists" e foi bem mais rápido do que a busca textual "Where Empresa <> 'XYZ'" como estava fazendo antes.

Obrigado!