Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
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
Partner - Specialist
Partner - Specialist

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