Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
srchagas
Creator III
Creator III

Novo Campo na Select

Pessoal bom Dia


Fui Obrigado a adicionar um novo campo em todos os meus documentos, só que tem um problema a trabalho com Gama de dados de 2011, 2012 e 2013, se eu tenta carregar esse novo campo agora os documentos antigos vão dar erro por que ele nao existia, existe alguma forma de resolver isso sem carregar tudo de novo ?

6 Replies
Not applicable

Você pode ler estes dados antes da alteração em um script (acredito da forma que já carrega hoje) e salve em um arquivo QVD.

Na nova consulta, leia este arquivo qvd, inserindo um campo nulo em seguida concatene com a tabela com os dados atuais inserindo o novo campo:

LOAD  SEUS_CAMPOS....

            '' AS NOVO_CAMPO

FROM ARQUIVO.QVD(qvd);

CONCATENATE

LOAD  SEUS_CAMPOS....

           NOVO_CAMPO

FROM SUA_TABELA;

Abraços

srchagas
Creator III
Creator III
Author

Bom Dia Eduardo,

No caso isso funciona se eu usar Qvd ? por que a select do extrator foi alterada...o nome do Arquivo é o mesmo, terei que alterar o nome do arquivo ?

Not applicable

Thiago,

Tem como postar o seu código para entender melhor?

A lógica seria retornar os campos até antes da alteração (ARQUIVO QVD_1 por exemplo) e depois concatenar com os novos valores. Sendo que para os dados antigos os valores desta coluna seria retornado nulo.

Abraços

srchagas
Creator III
Creator III
Author

Boa Tarde Eduardo,

Seria assim: tinha um Query no Meu extrator lá norma


SELECT v.valor_fracionado , v.valor_unidade v.valor_total FROM vendas v  WHERE v.id IS NOT NULL

Carregava essa informação em um QVD de Mês a Mês  devido a quantidade d einformações ser muito grande.

o problema que tenho é que pediram para que no Document tivesse mais um campo chamado: valor por Metragem Cubica.

Esse valor está na base de dados na mesma tabela se chama: "valor_m3"

então o que fiz foi inserir na query  SELECT v.valor_fracionado , v.valor_unidade v.valor_total, valor_m3 FROM vendas v  WHERE v.id IS NOT NULL

fiz a recarga do dados , porem se eu tentar recarregar o Document pedindo esse novo campo o valor_m3, tenho problema que por exemplo meu arquivo qvd do mês 2/2013 nao tinha esse campo lá então ele da erro dizendo que não localizou o campo, queria uma forma de ler os antigos e os novos ( Pq o campo foi recem criado mesmo)

Em tese é isso

Not applicable

Thiago,

Pelo o que entendi é muita informação para ser lido direto do SQL o que acaba causando uma lentidão na extração dos dados correto?

Então você possui um arquivo QVD dos meses anteriores pois a leitura através do QVD é muito mais rápida.

Você primeiro precisa realizar um tratamento no seu arquivo QVD, incluindo uma coluna vazia:

// Pode criar um arquivo de teste somente para gerar o QVD

LOAD

     VALOR_FRACIONADO,

     VALOR_UNIDADE,

     VALOR_TOTAL,

     '' AS VALOR_M3

FROM SEU_ARQUIVO_QVD.qvd(qvd);

STORE * FROM TABELA INTO TABELA.QVD;

Após gerado o arquivo QVD com a coluna, você não vai mais utilizar o documento criado, precisa somente do arquivo QVD gerado.

No script atual do seu documento Qlikview faça a carga a seguir.

TABELA:

LOAD

     VALOR_FRACIONADO,

     VALOR_UNIDADE,

     VALOR_TOTAL,

     VALOR_M3

FROM SEU_ARQUIVO_QVD.qvd(qvd);

// Depois você apenas realiza a leitura desta nova carga

CONCATENATE

LOAD

     VALOR_FRACIONADO,

     VALOR_UNIDADE,

     VALOR_TOTAL,

     VALOR_M3

SQL

SELECT

     v.valor_fracionado,

     v.valor_unidade,

     v.valor_total,

     valor_m3

FROM vendas v

WHERE v.id IS NOT NULL;

STORE * FROM TABELA INTO TABELA.QVD;

pablolabbe
Luminary Alumni
Luminary Alumni

Thiago,

  A solução mais simples para isso é ajustar os QVDS do historico, incluindo esta nova coluna em cada um destes arquivos.

  sugiro copiar os QVDs para uma pasta especifica onde você vai executar a conversão, ex: C:\pastaconversao.

  Use o script a seguir para ajustar os qvds:

   For each vFile in FileList('C:\pastaconversao\TABELA_20*.QVD')

         TABELA_TEMP:

          LOAD  *, NULL() AS valor_m3 FROM  $(vFile) (qvd)  ;

          STORE TABELA_TEMP INTO $(vFile);

         DROP TABLE TABELA_TEMP;

   Next vFile

  a variavel vFile conterá o nome do arquivo com o caminho completo

  concluida a conversão , copie os QVDs para a pasta original. (lembre-se de fazer um backup dos QVDs originais).

Abraço,

Pablo Labbe

Consultor Qlikview

Vision/TSVC

www.visiongi.com.br