Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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);
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:
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
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;
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!
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...
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'
;