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

Carga incremental, atualizar dados sem usar campo de modificação.

Bom dia amigos, estou com um problema que creio que seja um pouco complexo de resolver.

Possuo um script de carga incremental que funciona perfeitamente para incrementar novo registros, porem tenho dados passados que podem sofrer alterações no BD, más não possuo nem um campo que me flag se os dados foram atualizados.

O que pensei para resolver isso seria carregar sempre os últimos 20 dias de dados, porem quando faço dessa forma os registros são duplicados. 

Teria alguma maneira de incrementar os últimos 20 dias e apagar os registros anteriores que são iguais sem ter um campo de modificação?

Se alguém tiver alguma ideia de como fazer algo sobre isso, ficarei grato.

 

1 Solution

Accepted Solutions
RafaMartins
Creator II
Creator II
Author

Pensei em uma maneira de fazer, não sei se é a melhor pratica, más funciona para o meu caso.

Ao criar a variável que determina quais dados serão carregados, utilizei o campo data, setando a variável para max(Data)-20, assim consigo determinar que o select seja sempre maior que essa data.

Para não deixar os dados serem duplicados, já que não possuo um campo que me diz quais foram modificador, eu faço o select do campo como mencionado a cima e concateno com a leitura do qvd anterior onde as datas são menores que minha variável e em seguida salvo essa tabela substituindo o qvd original.

CRITERIO:
Load Max(CodIncremental)-20 as Ultima_Data
From [lib://Stage/TESTE_VEENDA2.qvd] (qvd);//Data Buscada No qvd caregado anteriormente

LET vID = Date(Peek('Ultima_Data',0,'CRITERIO'),'YYYY-MM-DD');
Drop Table CRITERIO;

[BI_venda]:
SELECT
Convert(Date,Data,103) as CodIncremental,
*
FROM "bi_sense".dbo."BI_venda" Where Convert(Date,Data,103) >= '$(vID)';

Concatenate(BI_venda)
Load
*
From [lib://Stage/TESTE_VEENDA2.qvd] (qvd) Where CodIncremental < '$(vID)';
Store BI_venda into [lib://Stage/TESTE_VEENDA2.qvd];

Provavelmente existe alguma outra maneira de fazer algo nesse sentido, más por enquanto foi a solução que encontrei.

  

View solution in original post

1 Reply
RafaMartins
Creator II
Creator II
Author

Pensei em uma maneira de fazer, não sei se é a melhor pratica, más funciona para o meu caso.

Ao criar a variável que determina quais dados serão carregados, utilizei o campo data, setando a variável para max(Data)-20, assim consigo determinar que o select seja sempre maior que essa data.

Para não deixar os dados serem duplicados, já que não possuo um campo que me diz quais foram modificador, eu faço o select do campo como mencionado a cima e concateno com a leitura do qvd anterior onde as datas são menores que minha variável e em seguida salvo essa tabela substituindo o qvd original.

CRITERIO:
Load Max(CodIncremental)-20 as Ultima_Data
From [lib://Stage/TESTE_VEENDA2.qvd] (qvd);//Data Buscada No qvd caregado anteriormente

LET vID = Date(Peek('Ultima_Data',0,'CRITERIO'),'YYYY-MM-DD');
Drop Table CRITERIO;

[BI_venda]:
SELECT
Convert(Date,Data,103) as CodIncremental,
*
FROM "bi_sense".dbo."BI_venda" Where Convert(Date,Data,103) >= '$(vID)';

Concatenate(BI_venda)
Load
*
From [lib://Stage/TESTE_VEENDA2.qvd] (qvd) Where CodIncremental < '$(vID)';
Store BI_venda into [lib://Stage/TESTE_VEENDA2.qvd];

Provavelmente existe alguma outra maneira de fazer algo nesse sentido, más por enquanto foi a solução que encontrei.