Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia!
Eu tenho uma tabela que é atualizada(faz carga programada) todos os dias ás 5 da manhã.
Exemplo, essa é uma consulta feita agora 05/02/2015
VALOR1 | VALOR2 | VALOR3 |
---|---|---|
10 | 40 | 60 |
20 | 50 | 80 |
Amanhã quando eu fizer a consulta será outros valores. Eu quero criar um calendário a partir de hoje, que guarde essa tabela acima com a data de hoje, pra que amanhã(06/02/2015) eu tenha a opção também de consultar(mostrar os valores) essa tabela de hoje(05/02/2015) e no dia 07/02/2015 eu tenha a opção de consultar os valores do dia 06/02/2015 e assim sucessivamente. Resumindo é como se eu tivesse guardando consultas anteriores e identificando cada consulta pela data da carga, e a carga é feita todos os dias, são valores de estoque, que mudam todos os dias.
Então nem vale a pena gerar um qvd por dia dessas informações, talvez possa gerar um qvd por ano.
Por ano serão, em média, 1.6M de registros.
Como eu faço pra criar uma lista de seleção de ano,mes e dia usando os valores da variavel, pra que depois de selecionar a data mude os valores da tabela.
LET vDataCarga = Date(Today(),'YYYY-MM-DD'); // sendo que aqui pega só a data de hoje
Você precisa adicionar o valor dessa variável em uma coluna da sua tabela, por exemplo:
LET vDataCarga = Date(Today(),'YYYY-MM-DD');
Tabela:
SQL SELECT VALOR1, VALOR2, VALOR3, '$(vDataCarga)' as DATA FROM TABELA;
STORE Tabela INTO Tabela_$(vDataCarga).qvd;
Agora você possui uma coluna de DATA (Dia, Mês e Ano) na sua tabela. Para extrair o valor de mês e ano, basta utilizar a função Month() e Year(), respectivamente.
Bom dia, fiz dessa maneira abaixo, ele salva os qvd certinhos, dos dias de cargas:
TABELA2_2015-02-05.qvd
TABELA2_2015-02-06.qvd
Mas a variável pega apenas a última data de carga que foi a de hoje, então na lista de seleção data ele pega apenas 06-02-2015 e ontem pegou 05-02-2015, ontem estava certo pq não teve carga antes, mas hoje deveria pegar a data de ontem já que ocorreu carga ontem.
O script roda certinho o único problema é esse.
LET vDataCarga = Date(Today(),'YYYY-MM-DD');
TABELA2:
LOAD
VALOR1,
VALOR2,
VALOR3,
'$(vDataCarga)' as dataCarga;
SQL SELECT
VALOR1,
VALOR2,
VALOR3
FROM TESTE;
STORE TABELA2 INTO TABELA2_$(vDataCarga).qvd;
LOAD * FROM TABELA2_2015*.qvd;
Sinceramente não entendi sua dúvida, pois sua solicitação foi para gravar um histórico sempre que a carga acontecer. Da forma que foi passado, sempre que a carga rodar vai receber o valor da data atual.
Poderia explicar melhor como funciona sua regra?
Posso, eu tenho dois qvds salvos:
TABELA2_2015-02-05.qvd carga de ontem
TABELA2_2015-02-06.qvd carga de hoje
Sendo que o do 06/02/2015 é a minha visão de valor de estoque hoje, mais eu quero saber quando eu tinha no estoque ontem, queria ter um campo de seleção de data que se eu selecionasse 05/02/2015 pegasse os valores da minha visão de ontem, ou seja TABELA2_2015-02-05.qvd, amanhã(07/02/2015) eu vou querer saber quando eu tinha hoje(06/02/2015) e quanto eu tinha ontem(05/02/2015), entendeu ?
Breno, então acredito que seu problema pode ser resolvido alterando a variável da data para
LET vDataCarga = Date(Today()-1,'YYYY-MM-DD');
Agora quando sua carga rodar as 5h00, ele vai gravar a informação com a data de ontem, por exemplo:
Rodou hoje 06/02/2015 05:00 e vai gravar com a data do dia 05/02/2015.
Seria isso?
Ola Breno,
O exemplo que eu dei e' uma forma simples que gera um arquivo por dia como o yuri.nicolett mencionou, em temos de consumo de memoria nao tem muita diferenca. O que muda e' que voce acaba tendo varios arquivos, isso e' interessante quando se trabalha com um volume grande de dados porque reduz drasticamente o tempo de carga mas no seu caso como o volume e' pequeno mesmo nao tem muita necessidade. Se preferir utilize o metodo do Yuri que tem um controle para consolidar corretamente os arquivos evitando duplicidades:
CONCATENATE
LOAD
VALOR1,
VALOR2,
VALOR3,
DATA
FROM TABELA.QVD (QVD)
WHERE NOT EXISTS(DATA);
Obs.: desculpa pela falta de acentuacao, a maquina que uso nao tem.
Se ele salvar a data anterior nao tem problema já que a carga é feita ás 05 da manhã, mas ele tem que salvar todas as datas de carga e permitir que de acordo com a seleção eu traga os valores do dia selecionado, vou tentar com essa sugestão sua e mando resposta.
Ele vai fazer isso, faça o teste e nos diga se deu certo!