Skip to main content
Announcements
Save $600 on Qlik Connect registration! Sign up by Dec. 6 to get an extra $100 off with code CYBERSAVE: REGISTER
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_

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'
;