Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. 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)
1 Solution

Accepted Solutions
nicolett_yuri

Segue o exemplo, basta realizar a recarga várias vezes.

View solution in original post

53 Replies
nicolett_yuri

Bom, vou te passar um exemplo de como se fazer, mas existem N formas!

Vamos imaginar que seu select no banco de dados seja:

SQL SELECT VALOR1, VALOR2, VALOR3 FROM TABELA;

a sua lógica para gerar esse qvd com a foto do dia será:

TABELA:

SQL SELECT VALOR1, VALOR2, VALOR3, sysdate() as DATA FROM TABELA;


CONCATENATE


LOAD

VALOR1,

VALOR2,

VALOR3,

DATA

FROM TABELA.QVD (QVD)

WHERE NOT EXISTS(DATA); //Carrega todo o qvd desprezando a data do dia em que esta sendo gerado, em caso da query ter sido rodada mais de uma vez ao dia.


STORE TABELA INTO TABELA.QVD (qvd);



OBS: Note que em primeiro lugar você deve gerar (manualmente) o TABELA.QVD para que essa rotine funcione. É possível deixar essa rotina de primeira geração automática também.

cesaraccardi
Specialist
Specialist

Ola Breno,

Para fazer isso voce precisa criar uma carga incremental, isso pode ser feito armazenando os dados em arquivos QVD's. Entao basicamente no script da sua aplicacao voce precisa usar uma variavel que armazene a data da carga.

Ex:

LET vDataCarga = Date(Today(),'YYYY-MM-DD');

Observe que estou definindo um formato de data YYYY-MM-DD, isso nao e' uma regra mas e' um formato que acaba sendo bastante conveniente, ja vou explicar por que.

Entao depois que a sua tabela e' carregada em memoria, voce adiciona uma linha de comando para exporta-la para o formato qvd:

STORE Tabela INTO Tabela_$(vDataCarga).qvd;

O resultado disso sera a criacao de varios arquivos, um para cada dia onde a carga e' executada:

Tabela_2015-02-05.qvd;

Tabela_2015-02-04.qvd;

Tabela_2015-02-03.qvd;

(...)

Finalmente na sua aplicacao voce pode escolher quais arquivos deseja carregar, uma forma facil de fazer isto e' usando o caracter coringa *. Ex:

1. Carregar todos os arquivos de 2015

LOAD * FROM Tabela_2015*.qvd;

2. Carregar todos os arquivos de Fev/2015

LOAD * FROM Tabela_2015-02*.qvd;

3. Carregar uma data especifica:

LOAD * FROM Tabela_2015-02-05.qvd;

(Aqui da pra ver como o formato de data fica bem conveniente).

Not applicable
Author

Obrigado, vou tentar de ambas as formas e mando uma resposta.

Not applicable
Author

Yuri não entendi sua observação no seu exemplo.

nicolett_yuri

Breno, a primeira vez que você executar esse código, caso não tenha o qvd TABELA.QVD criado, dará erro, pois você não possui o qvd ainda. Nesse caso você teria que cria-lo com a rotina:

TABELA:

SQL SELECT VALOR1, VALOR2, VALOR3, sysdate() as DATA FROM TABELA;


STORE TABELA INTO TABELA.QVD (qvd);


e depois de criar o qvd você consegue executar a rotina que te passei.


Depois te mando um exemplo para que esse processo execute mesmo que esse qvd ainda não exista.

Not applicable
Author

Ok

Not applicable
Author

Eu achei o exemplo do Cesar mais simples, mas terá um uso maior de memoria do servidor, estou certo ?

nicolett_yuri

Breno, a diferença do script do cesar.accardi com o meu é que o do Cesar vai gravar um qvd por dia. Isso é ruim? Não.

Eu acho viável dividir o qvd somente quando a informação armazenada seja muito grande. Pergunta: Qual o volume de registros, por dia, a sua tabela retorna?

Not applicable
Author

Yuri , 4.500 de Registros a média , gerei o primeiro qvd da data de hoje com o exemplo do Cesar e chegou  234 KB.