Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
fercas69
Contributor III
Contributor III

Carga incremental.

Pessoal, boa noite!

Tenho uma planilha de excel que mensalmente é atualizada. Preciso carrega-la e no mês seguinte vou precisar carrega-la novamente, porém sem perder a carga do mês anterior. Alguém sabe me dizer como fazer isto?

Labels (1)
1 Solution

Accepted Solutions
Thiago_Justen_

Seria mais ou menos isso?

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

View solution in original post

6 Replies
Thiago_Justen_

Seria mais ou menos isso?

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
fercas69
Contributor III
Contributor III
Author

Boa noite, Thiago.

E como faço para atualizar somente os registros que tivemos alteração?

Thiago_Justen_

Sugiro o 4º caso:

Caso 4: Inserir, Atualizar e Excluir

O caso mais difícil de solucionar é quando os registros são excluídos da base de dados de origem entre as execuções de script. As seguintes condições se aplicam:

  • A fonte de dados pode ser qualquer base de dados.
  • O QlikView carrega os registros inseridos ou atualizados na base de dados após a execução do último script.
  • O QlikView remove os registros excluídos da 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.
  • É necessário um campo chave primário para que o QlikView classifique os registros atualizados do arquivo QVD.
  • Esta solução forçará a leitura do arquivo QVD no modo padrão (em vez do otimizado), que ainda será consideravelmente mais rápido do que carregar a base de dados inteira.

Exemplo:

Let ThisExecTime = Now( );

QV_Table:

SQL SELECT PrimaryKey, X, Y FROM DB_TABLE

WHERE ModificationTime >= #$(LastExecTime)#

AND ModificationTime < #$(ThisExecTime)#;

Concatenate LOAD PrimaryKey, X, Y FROM File.QVD

WHERE NOT EXISTS(PrimaryKey);

Inner Join SQL SELECT PrimaryKey FROM DB_TABLE;

If ScriptErrorCount = 0 then

STORE QV_Table INTO File.QVD;

Let LastExecTime = ThisExecTime;

End If

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

Muito obrigado.

Thiago_Justen_

Questão resolvida Fernando?

Se sim,não deixe de fechar a thread marcando como úteis as resposta que lhe ajudaram e escolhendo uma delas (a que encerrou sua questão) para marcar como resposta correta.

Abs e Sucesso!

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

Resolvida Thiago!
Obrigado pelas orientações.