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