Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
junior_ehlke
Contributor 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?

Tags (1)
1 Solution

Accepted Solutions
junior_ehlke
Contributor III

Re: Estruturar Carga diária - Opiião

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?

7 Replies
rogerioqv
Contributor II

Re: Estruturar Carga diária - Opiião

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

Re: Estruturar Carga diária - Opiião

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

Re: Estruturar Carga diária - Opiião

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

Re: Estruturar Carga diária - Opiião

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?

Employee
Employee

Re: Estruturar Carga diária - Opiião

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
Valued Contributor

Re: Estruturar Carga diária - Opiião

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.

junior_ehlke
Contributor III

Re: Estruturar Carga diária - Opiião

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.