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

Announcements
Posting on Qlik Community is temporarily paused for some users. Thank you for patience and we'll update you soon!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Preciso de uma carga incremental

Preciso que sempre salve os registro novos. Exemplo o primeiro bloco carregue da linha 1 a linha 10 e o segundo bloco carregue apenas o que e complementar(linhas novas).

LOAD

     EstoqHist_id_linha                               as ID,

     Rua_CapArmazem_Chave,

     EstoqHist_ChavePosicao,

     CapArmazem_chave,

     HistDepo_id_depositante,

     EstoqHist_nivel,

     EstoqHist_id_produto,

     EstoqHist_volumes,

     EstoqHist_situacao,

     Calendario_Data

FROM

[$(Vcaminho)\test1.csv]

(txt, utf8, embedded labels, delimiter is ';', msq);

Concatenate

LOAD

     EstoqHist_id_linha,

     Rua_CapArmazem_Chave,

     EstoqHist_ChavePosicao,

     CapArmazem_chave,

     HistDepo_id_depositante,

     EstoqHist_nivel,

     EstoqHist_id_produto,

     EstoqHist_volumes,

     EstoqHist_situacao,

     Calendario_Data

FROM

[$(Vcaminho)\test1.qvd]

(qvd)

Where not Exists(ID,EstoqHist_id_linha);

Labels (1)
5 Replies
Thiago_Justen_
MVP
MVP

Caso 2: Inserir Apenas (Sem Atualizar nem Excluir)

Se os dados residirem em uma base de dados, não em um arquivo de log simples, a solução do caso 1 não funcionará. No entanto, o problema poderá ser solucionado com um mínimo de trabalho adicional. As seguintes condições se aplicam:

  • A fonte de dados pode ser qualquer base de dados.
  • O QlikView carrega os registros inseridos na base de dados após a execução do último script.
  • É necessário um campo ModificationDate (ou semelhante) para que o QlikView reconheça os registros novos.

Exemplo:

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(BeginningThisExecTime)#;

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD (qvd);

STORE QV_Table INTO File.QVD;

(Os sinais de sustenido na cláusula SQL WHERE definem o início e o final de uma data. Verifique o manual do banco de dados para obter a sintaxe de data correta do banco de dados.)

Fonte: https://help.qlik.com/pt-BR/qlikview/12.0/Subsystems/Client/Content/QVD_Incremental.htm

Aplica-se ao QlikView e ao Sense

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
alexbenderkv
Contributor III
Contributor III

Boa Tarde Rafael, Tudo bem?

Vou postar abaixo um exemplo bem simples para criação de uma carga incremental:

Pegamos como base um exemplo para Pedidos,

Caso possua duvidas, estou à disposição

Att.

Alex M. Bender

----------- Script  --------------

SET MesesProcessar = 2;

//Aqui fazemos a carga mês a mês dos dados do Pedido

// Nota-se que acima foi setado quantos meses quero processar,  (SET MesesProcessar = 2)

FOR i = $(MesesProcessar) - 1 to 0 step -1

     LET Mes = Text(Date(MonthStart(AddMonths(Today(),-$(i) )),'YYYYMM')); // Mudamos o mês a cada volta do loop

     DADOS_PEDIDOS:

     SELECT DT_PEDIDO,

                    NUMERO_PEDIDO,

                    VALOR_PEDIDO

        FROM PEDIDO

     WHERE TO_CHAR(DT_PEDIDO,'YYYYMM') = '$(Mes)';

     STORE DADOS_PEDIDOS into C:\TESTE\DADOS_PEDIDOS_$(Mes).qvd;

     DROP Table DADOS_PEDIDOS;

NEXT

// Aqui pegamos todos os meses gerados anteriormente e criamos um unico arquivo com todos os dados, caso haja necessidade

// Chamamos de Consolidado

PEDIDO_CONSOLIDADO:

LOAD *

FROM C:\TESTE\DADOS_PEDIDOS_*.qvd

qvd);


STORE PEDIDO_CONSOLIDADO into C:\TESTE\CONSOLIDADO\PEDIDOS_CONSOLIDADO.qvd;

DROP Table PEDIDO_CONSOLIDADO;

jonas_rezende
Specialist
Specialist

Rafael.

Se garantir que no primeiro LOAD ele carregará os registros precisos, como citado, da linha 1 a 10, basta fazer uma concatenação simples.

Ex.:

LOAD

    EstoqHist_id_linha,

    Rua_CapArmazem_Chave,

    EstoqHist_ChavePosicao,

    CapArmazem_chave,

    HistDepo_id_depositante,

    EstoqHist_nivel,

    EstoqHist_id_produto,

    EstoqHist_volumes,

    EstoqHist_situacao,

    Calendario_Data

FROM

[$(Vcaminho)\test1.csv]

(txt, utf8, embedded labels, delimiter is ';', msq);

Concatenate

LOAD

    EstoqHist_id_linha,

    Rua_CapArmazem_Chave,

    EstoqHist_ChavePosicao,

    CapArmazem_chave,

    HistDepo_id_depositante,

    EstoqHist_nivel,

    EstoqHist_id_produto,

    EstoqHist_volumes,

    EstoqHist_situacao,

    Calendario_Data

FROM

[$(Vcaminho)\test1.qvd]

(qvd);

Do contrário, desejar inserir linhas novas e atualizar as existentes em caso de alteração no dado. Antes, precisa eleger os campos inalterados, ou seja, chave (simples ou composta), o que sobrar será(ão)  o(s) campos a ser(em) atualizado(s), devido uma possível modificação, e em caso de existência e nada será alterado. Em outras palavras, o registro/linha/dado se manterá intacto.

No exemplo apresentado abaixo, elegi o campo EstoqHist_id_linha como chave principal, o que for diferente dele é passível de alteração.

LOAD

    EstoqHist_id_linha,

    Rua_CapArmazem_Chave,

    EstoqHist_ChavePosicao,

    CapArmazem_chave,

    HistDepo_id_depositante,

    EstoqHist_nivel,

    EstoqHist_id_produto,

    EstoqHist_volumes,

    EstoqHist_situacao,

    Calendario_Data

FROM

[$(Vcaminho)\test1.csv]

(txt, utf8, embedded labels, delimiter is ';', msq);

Concatenate

LOAD

    EstoqHist_id_linha,

    Rua_CapArmazem_Chave,

    EstoqHist_ChavePosicao,

    CapArmazem_chave,

    HistDepo_id_depositante,

    EstoqHist_nivel,

    EstoqHist_id_produto,

    EstoqHist_volumes,

    EstoqHist_situacao,

    Calendario_Data

FROM

[$(Vcaminho)\test1.qvd]

(qvd)

where

not Exists(EstoqHist_id_linha);

Espero ter ajudado!

Anonymous
Not applicable
Author

Bom dia Rafael.

Tenta com esse Script:

LOAD
EstoqHist_id_linha              as ID,
Rua_CapArmazem_Chave,
EstoqHist_ChavePosicao,
CapArmazem_chave,
HistDepo_id_depositante,
EstoqHist_nivel,
EstoqHist_id_produto,
EstoqHist_volumes,
EstoqHist_situacao,
Calendario_Data
FROM
[$(Vcaminho)\test1.csv]
(
txt, utf8, embedded labels, delimiter is ';', msq);

Concatenate

LOAD * Where not Exists(ID);
LOAD
EstoqHist_id_linha              as ID,
Rua_CapArmazem_Chave,
EstoqHist_ChavePosicao,
CapArmazem_chave,
HistDepo_id_depositante,
EstoqHist_nivel,
EstoqHist_id_produto,
EstoqHist_volumes,
EstoqHist_situacao,
Calendario_Data
FROM
[$(Vcaminho)\test1.qvd]
(
qvd);


Acredito que ele deve funcionar e com uma breve análise você entenderá as diferenças.


Felicidades...

suCsa
Contributor III
Contributor III

Bom dia,

Preciso de uma carga incremental para o script abaixo que insira registros novos e atualizados. 

LOAD
SEQPRODUTO,
NRO_SEGMENTO,
Date(DATA) AS DATA,
SEQCLIENTE,
SEQNF as ID,
SEQFAMILIA,
QTDE,
VALOR;
SQL
SELECT
SEQPRODUTO,
NRO_SEGMENTO,
CGO,
DATA,
SEQCLIENTE,
SEQNF,
SEQFAMILIA,
NRO_DIVISAO,
QTDE,
VALOR
FROM  venda
WHERE DATA > '01-Jan-2019'
;