Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
guilherme_rigon
Contributor III
Contributor III

Carga incremental

Bom dia!

Durante muito tempo carreguei meus dados integralmente, porém com o crescimento do volume de dados, a carga está ficando cada vez mais demorada. Tenho um script que extraio os dados de um servidor Oracle e depois armazeno em um .QVD para cada tabela. Não estou familiarizado com o conceito de carga incremental e vim buscar ajuda. Como faço para inserir carga incremental, abaixo segue um exemplo:

[TGFCAB]:
LIB CONNECT TO 'Oracle_192.168.1.250';
[TGFCAB]:
LOAD
NUNOTA,
NUMNOTA,
DTNEG,
CODPARC,
CODTIPOPER,
CODVEND,
QTDVOL,
CODNAT,
VLRNOTA,
VLRSUBST,
AD_SEPARADOR,
AD_CONFERENTE,
AD_CONFERENTE2,
AD_EMBALADOR,
CODTIPVENDA,
STATUSNOTA,
TIPMOV,
DTFATUR,
NUCONFATUAL,
DHTIPOPER,
STATUSNFE,
AD_QTDERROS,
DTENTSAI,
AD_ESTOQUISTA,
AD_ESTOQUISTA2,
AD_NUMNF;


SELECT NUNOTA,
NUMNOTA,
DTNEG,
CODPARC,
CODTIPOPER,
CODVEND,
QTDVOL,
CODNAT,
VLRNOTA,
VLRSUBST,
AD_SEPARADOR,
AD_CONFERENTE,
AD_CONFERENTE2,
AD_EMBALADOR,
CODTIPVENDA,
STATUSNOTA,
TIPMOV,
DTFATUR,
NUCONFATUAL,
DHTIPOPER,
STATUSNFE,
AD_QTDERROS,
DTENTSAI,
AD_ESTOQUISTA,
AD_ESTOQUISTA2,
AD_NUMNF
FROM "JIVA"."TGFCAB";
STORE TGFCAB INTO [lib://QVDSTAGE/TGFCAB.QVD];
DROP TABLE TGFCAB;

 

3 Replies
fernando_tonial
Employee
Employee

Bom dia.

Veja no help sobre o assunto.
https://help.qlik.com/pt-BR/qlikview/April2019/Subsystems/Client/Content/QV_QlikView/QVD_Incremental...

Don't worry, be Qlik.
Tonial.
Don't Worry, be Qlik.
guilherme_rigon
Contributor III
Contributor III
Author

Boa tarde!

Como ficaria a sintaxe nesse caso do exemplo acima?

Eu preciso do caso 3 ( Inserir, atualizar e não excluir) meu campo do banco dados de ModificationTime  se chama DHALTER. 

RafaMartins
Creator II
Creator II

Boa Tarde,

Bom amigo posso lhe passar o método que uso,  pode ter alguma variação de outros scripts.

Para começar você precisa criar uma variável  que fará um teste logico para determinar se será feita a primeira carga ou se já ha carga anterior

LET vFileExists1 = IF(FileSize('[lib://dash/VENDAS.qvd]') > 0, 1, 0);

Essa variável diz se na pasta que você está dando store do seu qvd  se ele existe ou não.

LET vID = IF(IsNull(vID), 0, vID);

Esta outra variável é usada para no caso de uma primeira carga não dar erro por encontrar um valor nulo.

Com isso você pode criar uma aba para a primeira carga:

Aqui é onde usamos a variável criada anteriormente para para determinar que se não houver qvd ele ira fazer a carga completa.

IF vFileExists1 = 0 THEN
LOAD
FILIAL,
ANO,
MÊS,
DATA ,
FROM [lib://dash/VENDAS.xlsx]
(ooxml, embedded labels, table is VENDAS);
Store VENDAS into [lib://dash/VENDAS.qvd] (qvd);
drop table VENDAS;
End If

Então criamos outra aba para a carga incremental.

IF vFileExists1 = 1 THEN // aqui testamos se existe um qvd
VENDAS:
Load
FILIAL,
ANO,
MÊS,
DATA ,
FROM [lib://dash/VENDAS.qvd] (qvd);
NoConcatenate
Criterio:                                                 //aqui determinamos qual o campo que usaremos como referencia para a incremental
Load max(DATA) as Ultima_data //determinamos qual o valor do campo no meu caso a ultima data
Resident VENDAS;
LET vID1 = PEEK('Ultima_data',0,'Criterio');
Drop Table Criterio;

LOAD
FILIAL,
ANO,
MÊS,
DATA ,
FROM [lib://dash/VENDAS.xlsx]
(ooxml, embedded labels, table is VENDAS) WHERE DATA > '$(vID1)';; //essa função diz que sera feita a carga de dados                                                                                                                                                         apenas que forem maiores que minha max(data)


Store VENDAS into [lib://dash/VENDAS.qvd];
Drop Table VENDAS;
End If

Eu dou um drop na tabela pois faço um load do qvd depois más vc pode ver qual a forma fica melhor pra vc