Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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!
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.
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.
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.
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;
Boa tarde Márcio
Entedi. Porém eu obviamente posso usar também "Not Exists()" ?
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>
O problema foi resolvido? Se sim, marque as respostas úteis/correta para encerrar o tópico e ajudar a manter a comunidade organizada.
Para apoio;
Referência (Tópicos 2.3 e 2.4): Manual do usu&amp;aacute;rio | Como criar e gerir minhas perguntas?
Abraço.
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!