Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
junior_ehlke
Creator III
Creator III

Estruturar Carga diária - Opiião

Boa tarde, quero uma sugestão de vocês para a criação e atualização dos arquivos QVDs.

Hoje eu faço select de 14 tabelas onde no projeto de carga eu separo elas por mês e salvo separadamente, exemplo:

select * from tabela1(...) mes='04' salvo como tabela1_04.qvd

select * from tabela1(...) mes='05' salvo como tabela1_05.qvd

e assim com todas elas, entao no projeto eu concateno todos os qvds. até aqui ta funcionando ok.

Porém dessa forma apenas é viável como teste, acredito que a carga esteja muito demorada para eu colocar como homologação,

pensei em criar uma variavel do mes atual exemplo

select * from tabela1 (...) mes= $var_mes e salvar como tabela1_$var_mes.qvd

Minha duvida é que se algum dado anterior for modificado no sistema eu vou perder e no fim do mes, será que dessa forma vou perder o ultimo dia?

Como voces fazem o script de carga?

Labels (1)
1 Solution

Accepted Solutions
junior_ehlke
Creator III
Creator III
Author

Vi que o Fernando Tonial em um outro questionamento colocou o seguinte codigo:

Exemplo de Script:

Tabela_QV:

SQL SELECT ChavePrimária, X, Y FROM DB_TABLE

WHERE HoraModificação >= #$(HoraÚltExec)#;

Concatenate LOAD ChavePrimária, X, Y FROM Arquivo.QVD

WHERE NOT Exists(ChavePrimária);

STORE Tabela_QV INTO Arquivo.QVD;

Porém não sei como eu crio esse campo de HoraModificação, e a chave primaria pensei em usar o OID do banco, o que acham?

View solution in original post

7 Replies
rogerioqv
Creator II
Creator II

Hamilton,

Em alguns clientes onde é possível eu utilizo a carga incremental de QVD's... em um cliente aqui, acabei gerando um QVD maior com os dados anteriores ao ano em questão, ou seja, de 2013 para baixo... como sei que as informações não serão mudadas nesse período, gerei o QVD uma única vez e o carrego a cada carga no QVW.

Já o do ano atual, faço incremental (atualização e inserção). Dá uma olhadinha na documentação sobre carga incremental, lembrando que o banco de dados tem que ter estrutura para suportar isto (datas que possam ser utilizadas como filtro para o incremental).

Abraços.

junior_ehlke
Creator III
Creator III
Author

sera que eu consigo criar um campo ID pelo proprio SQL na hora de gerar o qvd? Ficaria confiável?

nicolett_yuri

Você pode criar uma regra para verificar se for o último dia do mês, a carga deve atualizar o mês anterior e o mês atual.

Sobre perder registros, você deve verificar se existe uma coluna preenchida para data de atualização, em caso positivo você consegue fazer carga incremental por atualização com qvds quebrados por mês, mas ficará um pouco mais complicado o código.

junior_ehlke
Creator III
Creator III
Author

Vi que o Fernando Tonial em um outro questionamento colocou o seguinte codigo:

Exemplo de Script:

Tabela_QV:

SQL SELECT ChavePrimária, X, Y FROM DB_TABLE

WHERE HoraModificação >= #$(HoraÚltExec)#;

Concatenate LOAD ChavePrimária, X, Y FROM Arquivo.QVD

WHERE NOT Exists(ChavePrimária);

STORE Tabela_QV INTO Arquivo.QVD;

Porém não sei como eu crio esse campo de HoraModificação, e a chave primaria pensei em usar o OID do banco, o que acham?

Clever_Anjos
Employee
Employee

Esse exemplo foi retirado do manual e assume que você possua um campo "HoraModificação" em sua tabela.

Qualquer campo que seja garantidamente sequencial serve.

aderlanrm
Partner - Specialist
Partner - Specialist

Olá Hamilton, tudo bem?

Então, a data da modificação é como o Clever falou, já existe no banco, em muitos casos é a data de cadastro do registo, ou data de atualização, ultima alteração, são vários os nomes que são usados, quando são.

Há casos onde existe um campo de autoincremento no banco, ID alguma coisa... Esse também pode ser usado, pegando só os registros com número maior que os que já foram carregados antes.

A chave pode ser do banco ou pode ser gerada no QlikView, algo assim:

LOAD AutoNumberHash128(A,B) as Chave, X, Y;

SQL Select A, B, X, Y from Tabela where DataCadastro >= '$(vUltCarga)';

Concatenate LOAD Chave, X, Y From ...

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
junior_ehlke
Creator III
Creator III
Author

Obrigado pela ajuda pessoal, consegui entender esse codigo hehe,

a principio vou usar o ID do prório banco pois pelos testes que fiz, caso duas ou mais linhas sejam identicas o sistema ignora todas e considera apenas uma, acredito que neste caso o ID do seja o mais confiável. Não testei com a AutoNumberHash128 mas é outra solução.