Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
nprospero
Contributor
Contributor

Fatiamento Arquivo em Ano/Mes

Bom dia, por favor uma ajuda.

Tenho que fazer carga incremental, onde tenho uma coluna no meu qvd chamada dat_ref_carga que a utilizo para ver a ultima data que carreguei da origem.

Eu preciso fatiar (separar) o arquivo em AnoMes desta dat_ref_carga. O problema são nos finais e inicio de mes, porque irá acontecer de por exemplo estar no dia 02/10 e o script trazer informações de 29/09, 30/09, 01/10 e 02/10.

Eu preciso salvar o arquivo qvd no formato: NomeTabela_YYYYMM.

Lembrando que a carga tem que ser incremental, porque se se fosse de outra maneira eu sempre iria ler os 2 ultimos meses e matava o problema.

Alguem passou por isso e pode me dar uma ajuda por favor ?

Obrigado,

Nilton.

 

3 Replies
paulinhok14
Creator
Creator

Olá

"O problema são nos finais e inicio de mes, porque irá acontecer de por exemplo estar no dia 02/10 e o script trazer informações de 29/09, 30/09, 01/10 e 02/10."

Por que isso é um problema? Não entendi

elvis_schwarz
Creator
Creator

Olá Nilton

Você terá que fazer um IF para verificar se o dia é igual a data que faz a virada do mês e caso a condição seja verdadeira você faz 2 stores o 1º para guardar o QVD com os dados do mês anterior e o segundo com o mês atual.
Seria algo tipo

 if Num(day(Today())) <=5 then

Let mesAnterior = MonthStart(Today())-1;

Store nomedaTabela Into nomedaTabela_$(mesAnterior).qvd

EndIf

Store nomedaTabela Into nomedaTabela_$(mesAtual).qvd

 

diogoduarte
Partner - Contributor III
Partner - Contributor III

Cara, também não entendi muito bem o porque do problema no final do mês, mas vou tentar te dar uma dica que talvez você adapte e te ajude a resolver sua situação.

Eu vou considerar que você vai utilizar esse QVD com a coluna dat_ref_carga para ser incrementado com os novos dados advindos do seu banco (ou repositório que for).

Qvd_Incremental:
Load
max(dat_ref_carga) as dat_ref_carga
From arquivo.qvd (qvd);

LET maxDataQlik = Peek('dat_ref_carga');

Drop table Qvd_Incremental;

Dados_Banco:
Load
*,
MonthName(campo_data) as grava_mes
Sql .... 

meses:
Load Distinct
MonthName(campo_data) as meses_carga
Resident Dados_Banco;

For Each mes in FieldValueList('meses_carga')

QVD_Gravar:
Load
*
Resident Dados_Banco
Where grava_mes = '$(mes)';

Store * from QVD_Gravar into [lib://NOME_$(mes)] (qvd);

Drop table QVD_Gravar;

Next meses_carga;

Drop tables Dados_Banco , meses ;

 

Se eu entendi alguma coisa, isso pode te ajudar a solucionar o seu problema, caso contrário me explica novamente hehe.

Valeu