Fala pessoal, tudo bom?

 

Provavelmente em algum momento você já teve que carregar uma tabela fato grande e notou que alguns campos numéricos e datas não vieram formatados da forma em que precisa para exibi-los e utiliza-los em suas expressões, nossa primeira reação é de adicionar as funções de formatação no script de leitura deste QVD, mas logo percebemos que a leitura que antes ocorria em 20 segundos passou a demorar mais de 10 minutos por que perdemos a leitura otimizada do QVD.

 

 

Lembram o que é uma leitura otimizada? Eu falei disso neste post: Melhores Práticas - QVD Optimized.

 

Em resumo, um QVD mantém a leitura otimizada somente quando realizamos essas ações em sua leitura:

  • Renomear campos
  • DISTINCT
  • Omitir Campos (Omit)
  • Where Exists Simples

 

É... lá se vai a leitura otimizada quando utilizo as funções de formatação Date ou Num. Mas afinal, é possível formatar campos sem que percamos a leitura otimizada deste QVD? SIM!

 

Primeiro precisamos de uma tabela com campos não formatadas, como a imagem abaixo:

01

Neste exemplo temos o campo DATA e VALOR sem formatação.

 

Queremos formatar a DATA como 'DD/MM/YYYY hh:mm:ss' e o VALOR com duas casas decimais.

IMPORTANTE: Estamos apenas formatando o campo, ou seja, não podemos remover a informação de hora, minuto e segundo do campo de DATA, pois isso seria uma transformação de valores.

 

 

Agora precisamos criar uma tabela temporária com a formatação correta para os campos que desejamos formatar. Para isso iremos utilizar o comando AutoGenerate.

Note que cada campo formatado deve conter o mesmo nome do campo que será formatado.

 

Veja o código:

02

 

A formatação pode ocorrer sobre o Null(), pois o mais importante é fazermos o QlikView identificar que o campo DATA e o VALOR possuem estas formatações.

 

Agora podemos carregar o nosso QVD e depois dropar a tabela de formatação de campos:

03

 

Vejam o processo de execução do script:

 

04

 

Muito bom!!

Por que isso ocorre? Pois o Qlikview cria a associação da formatação para o campo independente da tabela em que este campo esteja (lembre-se da associação de dados), ou seja, para o Qlikview o campo DATA possui a formatação 'DD/MM/YYYY hh:mm:ss' e o campo VALOR possui a formatação '#.##0,00'.

 

Material para download

Segue um qvw demonstrando os passos realizados deste artigo. Clique aqui!

 

Conclusão

É claro que podemos formatar campos através da aba Número das propriedades do documento, mas é importante identificarmos os pequenos erros que cometemos por falta de entendimento de como a ferramenta se comporta para determinadas situações.

 

Até a próxima semana pessoal!!