Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 ?
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
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 ?
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
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
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;
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