Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá Pessoal,
Percebi que uma de minhas tasks estava dando erro e então descobri que meu arquivo, que já havia sido carregado e que estava carregando normalmente, por algum motivo, foi para 0kb.
Obs.: Utilizamos o esquema de carregamento incremental.
A solução paliativa foi voltar o bkp do arquivo carregado para que a task prosseguisse o seu carregamento.
Alguém já passou por essa situação ou sabe como posso solucionar ?
Log:
Abraço!
Felipe,
existe uma variável no Qlik que se estiver setada continua apos o erro......
set ErrorMode=0;
Não sei se você tem ela setada, pois teoricamente dando erro antes de dar o store o QVD não poderia ser perdido.....
De qualquer forma, em cargas incrementais, para evitar que em uma carga PARCIAL eu mate o arquivo QVD eu faco uma checagem da qtde de registros que tem o QVD e o que foi lido do banco de dados + concatenacao do QVD. Se for igual ou maior , salvo....
Se existe o QVD, pego a qtde de registros...
LET v_VBUK_QVD = QvdNoOfRecords('$(vStagePath)VBUK.QVD');
E depois de ler do banco e caso concatenar, verifico os tamanhos....se for maior salvo,
Let v_VBUK_RAM = NoOfRows('VBUK'); // Qtde de Registros na memoria
if $(v_VBUK_RAM) > $(v_VBUK_QVD) then // Se em memoria for maior que a qtde do QVD
TRACE ** Salvando o QVD da VBUK...em RAM $(v_VBUK_RAM)...em QVD $(v_VBUK_QVD) **;
STORE VBUK Into $(vStagePath)VBUK.QVD (qvd);
ELSE
TRACE ************************* Nao Salvou o QVD pois os registros em RAM $(v_VBUK_RAM) sao menores que os em QVD $(v_VBUK_QVD) *********************************;
ENDIF
DROP Table VBUK;
Quem sabe voce adapta ao seu codigo/negocio e assim, nao salvara o QVD com menos do que ja tinha....
Felipe,
existe uma variável no Qlik que se estiver setada continua apos o erro......
set ErrorMode=0;
Não sei se você tem ela setada, pois teoricamente dando erro antes de dar o store o QVD não poderia ser perdido.....
De qualquer forma, em cargas incrementais, para evitar que em uma carga PARCIAL eu mate o arquivo QVD eu faco uma checagem da qtde de registros que tem o QVD e o que foi lido do banco de dados + concatenacao do QVD. Se for igual ou maior , salvo....
Se existe o QVD, pego a qtde de registros...
LET v_VBUK_QVD = QvdNoOfRecords('$(vStagePath)VBUK.QVD');
E depois de ler do banco e caso concatenar, verifico os tamanhos....se for maior salvo,
Let v_VBUK_RAM = NoOfRows('VBUK'); // Qtde de Registros na memoria
if $(v_VBUK_RAM) > $(v_VBUK_QVD) then // Se em memoria for maior que a qtde do QVD
TRACE ** Salvando o QVD da VBUK...em RAM $(v_VBUK_RAM)...em QVD $(v_VBUK_QVD) **;
STORE VBUK Into $(vStagePath)VBUK.QVD (qvd);
ELSE
TRACE ************************* Nao Salvou o QVD pois os registros em RAM $(v_VBUK_RAM) sao menores que os em QVD $(v_VBUK_QVD) *********************************;
ENDIF
DROP Table VBUK;
Quem sabe voce adapta ao seu codigo/negocio e assim, nao salvara o QVD com menos do que ja tinha....
Esse campo: "NR_MOVIMENTO" foi adicionado posteriormente?
Quando realizamos carga incremental, sempre que houver acréscimo de uma coluna, esta deve ser inserida, em todo o histórico, no arquivo QVD da carga.
Esse campo está sendo apontado no erro, pois é o primeiro campo da carga, mas ele já existia.
Na verdade, qualquer outro campo ele iria acusar esse erro, pois o arquivo encontrava-se vazio (0KB).
Obrigado Alessandro !!!
Vou implementar essas verificações em meus carregadores.