Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
suCsa
Contributor III
Contributor III

Dúvida Carga incremental

Criei um script de carga incremental para inserir os dados apartir do max data, só que não está executando conforme esperado. Como se ele não estivesse entendendo a clausura where DATA > '$(Data_ultVenda)'; 

MAX_DATA:
Load
Date(MAX (DATA)) as Data_ultVenda
FROM [lib://DADOS/QLV_VENDA_DIA.qvd] (qvd);

LET vdUltimaVenda = Peek('Data_ultVenda',0,MAX_DATA);


Venda:

SQL
SELECT
SEQPRODUTO,
NRO_SEGMENTO,
CGO,
DATA,
SEQCLIENTE,
SEQNF,
SEQFAMILIA,
NRO_DIVISAO,
NRO_EMPRESA,
QTDE,
VALOR,
VLR_CUSTO,
VLR_PROMOCAO,
VLRCTOLIQUIDO,
VLR_CUSTO_BRUTO
FROM venda
where DATA > '$(Data_ultVenda)';

Concatenate
Load * FROM [lib://DADOS/QLV_VENDA_.qvd](qvd);
Store Venda into [lib://DADOS/QLV_VENDA_.qvd](qvd);

exit Script;

 

Alguém tem alguma dica?

5 Solutions

Accepted Solutions
Ezir
Creator II
Creator II

Isso ocorre por causa do formato da data que vem da sua consulta SQL em relação ao formato de data que está na variável SET DateFormat='DD/MM/YYYY'  do seu script de carga.

É necessário as duas datas estarem no mesmo formato. Por exemplo,

 vdUltimaVenda = Date(vdUltimaVenda,'YYYY-MM-DD') 

 

View solution in original post

suCsa
Contributor III
Contributor III
Author

O formato da variável é o mesmo do campo data do load('DD/MM/YYYY'), porém na consulta sql  o formato tem que ser do tipo '21-jan-2019', como posso fazer?

teste.png

Na verdade, o incremental ideal seria pelo campo seqnf, pois adicionaria notas que não foram processadas antes do processamento da carga. Alguma sugestão?

View solution in original post

Ezir
Creator II
Creator II

Sugiro a conversão da data na consulta SQL de '21-jan-2019' para '21/01/2019', porém a função da conversão depende do banco que está utilizando.

 

Considerando que na sua tabela não tenha alteração dos registros passados, então a carga incremental melhor seria pelo campo chave da tabela. Você citou o campo seqnf .

 

 

 

temp:
LOAD
	max(SEQNF) as id
FROM [lib://DADOS/QLV_VENDA_DIA.qvd] (qvd);

LET vId = Peek('id');
drop table temp;


Venda:
SQL
  SELECT
  SEQPRODUTO,
  NRO_SEGMENTO,
  CGO,
  DATA,
  SEQCLIENTE,
  SEQNF,
  SEQFAMILIA,
  NRO_DIVISAO,
  NRO_EMPRESA,
  QTDE,
  VALOR,
  VLR_CUSTO,
  VLR_PROMOCAO,
  VLRCTOLIQUIDO,
  VLR_CUSTO_BRUTO
  FROM venda
  where SEQNF > $(vId);

Concatenate
Load * FROM [lib://DADOS/QLV_VENDA_.qvd](qvd);
Store Venda into [lib://DADOS/QLV_VENDA_.qvd](qvd);
Drop Table Venda;

 

 

 

View solution in original post

suCsa
Contributor III
Contributor III
Author

Deu certo o script, só precisa retirar a linha abaixo.  

Drop Table Venda;

 

View solution in original post

suCsa
Contributor III
Contributor III
Author

"Sugiro a conversão da data na consulta SQL de '21-jan-2019' para '21/01/2019', porém a função da conversão depende do banco que está utilizando."

O banco que utilizo é o oracle.

View solution in original post

6 Replies
Ezir
Creator II
Creator II

Isso ocorre por causa do formato da data que vem da sua consulta SQL em relação ao formato de data que está na variável SET DateFormat='DD/MM/YYYY'  do seu script de carga.

É necessário as duas datas estarem no mesmo formato. Por exemplo,

 vdUltimaVenda = Date(vdUltimaVenda,'YYYY-MM-DD') 

 

suCsa
Contributor III
Contributor III
Author

O formato da variável é o mesmo do campo data do load('DD/MM/YYYY'), porém na consulta sql  o formato tem que ser do tipo '21-jan-2019', como posso fazer?

teste.png

Na verdade, o incremental ideal seria pelo campo seqnf, pois adicionaria notas que não foram processadas antes do processamento da carga. Alguma sugestão?

Ezir
Creator II
Creator II

Sugiro a conversão da data na consulta SQL de '21-jan-2019' para '21/01/2019', porém a função da conversão depende do banco que está utilizando.

 

Considerando que na sua tabela não tenha alteração dos registros passados, então a carga incremental melhor seria pelo campo chave da tabela. Você citou o campo seqnf .

 

 

temp:
LOAD
	max(SEQNF) as id
FROM [lib://DADOS/QLV_VENDA_DIA.qvd] (qvd);

LET vId = Peek('id');
drop table temp;


Venda:
SQL
  SELECT
  SEQPRODUTO,
  NRO_SEGMENTO,
  CGO,
  DATA,
  SEQCLIENTE,
  SEQNF,
  SEQFAMILIA,
  NRO_DIVISAO,
  NRO_EMPRESA,
  QTDE,
  VALOR,
  VLR_CUSTO,
  VLR_PROMOCAO,
  VLRCTOLIQUIDO,
  VLR_CUSTO_BRUTO
  FROM venda
  where SEQNF > $(vId);

Concatenate
Load * FROM [lib://DADOS/QLV_VENDA_.qvd](qvd);
Store Venda into [lib://DADOS/QLV_VENDA_.qvd](qvd);
Drop Table Venda;

 

 

 

Ezir
Creator II
Creator II

Sugiro a conversão da data na consulta SQL de '21-jan-2019' para '21/01/2019', porém a função da conversão depende do banco que está utilizando.

 

Considerando que na sua tabela não tenha alteração dos registros passados, então a carga incremental melhor seria pelo campo chave da tabela. Você citou o campo seqnf .

 

 

 

temp:
LOAD
	max(SEQNF) as id
FROM [lib://DADOS/QLV_VENDA_DIA.qvd] (qvd);

LET vId = Peek('id');
drop table temp;


Venda:
SQL
  SELECT
  SEQPRODUTO,
  NRO_SEGMENTO,
  CGO,
  DATA,
  SEQCLIENTE,
  SEQNF,
  SEQFAMILIA,
  NRO_DIVISAO,
  NRO_EMPRESA,
  QTDE,
  VALOR,
  VLR_CUSTO,
  VLR_PROMOCAO,
  VLRCTOLIQUIDO,
  VLR_CUSTO_BRUTO
  FROM venda
  where SEQNF > $(vId);

Concatenate
Load * FROM [lib://DADOS/QLV_VENDA_.qvd](qvd);
Store Venda into [lib://DADOS/QLV_VENDA_.qvd](qvd);
Drop Table Venda;

 

 

 

suCsa
Contributor III
Contributor III
Author

Deu certo o script, só precisa retirar a linha abaixo.  

Drop Table Venda;

 

suCsa
Contributor III
Contributor III
Author

"Sugiro a conversão da data na consulta SQL de '21-jan-2019' para '21/01/2019', porém a função da conversão depende do banco que está utilizando."

O banco que utilizo é o oracle.