Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Criar Calendário com datas de Carga

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

VALOR1VALOR2VALOR3
104060
2050

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.

Labels (1)
53 Replies
nicolett_yuri

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.

Not applicable
Author

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

nicolett_yuri

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.

Not applicable
Author

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;

nicolett_yuri

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?

Not applicable
Author

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 ?


nicolett_yuri

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?

cesaraccardi
Specialist
Specialist

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.

Not applicable
Author

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.

nicolett_yuri

Ele vai fazer isso, faça o teste e nos diga se deu certo!