Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Processo para atualizar automaticamente minha aplicação QVW

Prezados desde de ja agradeço pelas ultimas respostas onde aprendi muito!

A situação é a seguinte:

Tenho uma base de dados com uma tabela HISTORICO, onde todas as ocorrencia ficam registradas.

Gerei minha aplicação com base nesta tabela onde fiz uma query para trazer todas as informações que preciso.

nesta tabela HISTORICO, tenho uma campo DATA e gostaria de atualizar minha aplicação sem fazer um reload manual.

Hoje faço da seguinte forma:

1º Faço reload gerando as informações [base]

2º Gero o qvd [base.qvd]

3º Drop table a tabela [base]

4º Coloco o QVD Base.qvd atualizado dentro da minha pasta no servidor chamada DADOS

5º Abro minha aplicação no Servidor e testo assim como no Access Point

Como posso fazer isso de forma profissional sem esses passos todos ?

Arquivo de extração separado?

Management Console, guia document, colocar o extrator dentro da pasta EXTRAÇÃO ?

Como agendar na guia RELOAD ?

8 Replies
paulovendruscol
Creator
Creator

Jeferson,

Basta você agendar seus QVW no QMC.

QMC>Documents>Seleciona o QVW que deseja agendar>aba reload>aplique a regra de carga deseja>botão aplicar

um exemplo:

1 QVW - Extração da base original - Carregar todo dia as 09:00

Na aba reload, selecione a opção Days e preencha o campo Every e o campo horas com 09:00;

2 QVW - Vai tratar os dados extraídos do QVW 1 - Selecione a opção On Event from Another Task e preencha os campos com successful e localize o QVW 1;

3 QVW - Sua visão final. Repete o passo do QVW 2, porém, em On Event from Another Task selecione successful  e localize o QVW 2;

Obs: Basta vc definir a melhor regra de acordo com as suas necessidades...

mauroponte
Creator II
Creator II

Jeferson,

Complementando as dicas do Paulo....

Seria bom que voce criasse um QVW para cada operação(Extração, Transformação e Load-Visão), ou pelo menos para extração e load, assim voce libera o banco de dados mais rapidamente.

Para organizar melhor vão algumas sugestões:

1)Crie pastas diferentes para cada operação. Assim os extratores, transformadores e visões ficam melhor organizados, propiciando tambem uma melhor apresentação no Access Point.

2)Após criar as pastas e distribuir as aplicações configure as pastas na QMC nas abas System>Setup>Qlikview Servers>Folders e System>Setup>Distribution Services>General.

3)Ainda na QMC, na aba Documents>User Documents> Document Information Crie categorias para suas aplicações. Por exemplo voce pode criar uma categoria Extratores, outra Transformadores e outra Visoes, e associa-las a cada aplicação de acordo com a operação. dessa forma fica mais facil de encontrar suas aplicações no Access Point. No caso das visoes finais voce poderia por exemplo criar categorias tipo Visoes Financeiras, Visões de Compras, Visoes de Faturamento, etc. para organizar as visoes por setores.

4)Na Aba Documents>User Documents>Server> Availability da QMC desmarque a opção EI Client para os extratores e transformadores para que estes nao sejam apresentados no Access Point, e nao sejam vistos pelos usuários finais.

Em seguida proceda o agendamento das tarefas de recarga conforme orientado pelo paulo.

Segue anexo documento com imagens das abas da QMC sitadas.

Espero ter ajudado.

Not applicable
Author

Obrigado Mauro, acabei criando essas hierarquias anteriormente de tanto de fucei no qlikview, tambem criei varios modulos a ja acesso no access point assim como separei com essas politicas de boas praticas que você recomendou...mas fico muito agradecido por seu esclarecimento...mas realmente o que estou apanhando é nas DATAS...não consegui fazer com que minha variavel de DATA usada conforme abaixo funcione...e não sei como solucionar, já nem dormi pensando nisso...kkkk agradeço se puder ajudar Mauro.

//seleciona maxima data no qvd

tmp:

load

max(HIS_DATAHORA) as HIS_DATAHORA

FROM

(qvd);

//quarda a informação da ultima data qvd

let vData = date(peek('HIS_DATAHORA',0,tmp),'DD/MM/YYYY');

drop table tmp;

//uso a variavel para atualizar o qvd (AQUI ESTA O PROBLEMA A VARIAVEL FUNCIONA MAS TRAZ NESTA CONSULTA DATAS ANTERIORES A DATA DA VARIAVEL EXEMPLO:

NA VARIAVEL ESTA 04/10/2016 NA CONSULTA TRAZ DADOS COM DATAS TIPO12/04/2016)

SELECT * FROM HISTORICO H

WHERE

h.his_pro_cod ='CCF'

and h.his_datahora >= '$(vData)'

and rownum <100

;

mauroponte
Creator II
Creator II

Jeferson,

Acredito que o que esteja acontecendo é que o SQL nao está aceitando a clausula '$(vData)' no where, pois acho que ele nao interpreta o $  como o qlik.

Tente subir a tabela toda sem '$(vData)' na clausula where em uma tabela temporaria deixando ela em memoria.

em seguida carregue a tabela a partir da tabela em memoria a clausula resident utilizando o where.

Ficaria mais ou menos assim:

TB_Temp:

SELECT * FROM HISTORICO H where and rownum <100;

noconcatenate

load *

resident TB_Temp

WHERE

h.his_pro_cod ='CCF'

and his_datahora >= '$(vData)';

Not applicable
Author

Bha tchê, fica inviavel pensando no tamanho desta tabela, são bilhões de informação, a minha realidade é conseguir atualizar o meu qvd que ja contem as informações extraidas desta tabela e alimentar ele diariamente apenas com uma incremental do que aconteceu no dia vigente utilizando o campo data para popular o qvd apenas com as informações novas...

thiago_mlg
Creator II
Creator II

Jeferson, boa tarde!

Pode estar acontecendo a seguinte situação. Você formatou a data da variavel utilizando 'DD/MM/YYYY'), porem como vc esta utilizando a variavel no SQL, pode ser que o formato da data no sql esteja MM/DD/YYYY, is faz com que aparentemente você esteja trazendo algumas datas antigas.. mais na verdade o formato está errado.

Para solucionar isso eu acredito que o melhor seria colocar a variavel no load mais ou menos desta forma

LOAD *

WHERE DATE#(his_datahora,'DD/MM/YYYY)  <= '$(vData);

SELECT * FROM HISTORICO H

WHERE

h.his_pro_cod ='CCF'

and rownum <100;

Qualquer duvida à disposição.

Not applicable
Author

Não rolou brother...

Not applicable
Author

Nossa DEPOIS Uma semana OU Duas de m uita peleia e Muita Leitura, vídeos MUITOS, e principalmente com a Ajuda de voces aqui a Fazer fórum achei o Erro OU Melhor achei varios Erros e varios acertos e principalmente aprendi Mais do Que imaginava Aprender MUITO OBRIGADO MESMO A TODOS QUE TIVERAM PACIENCIA COM MINHAS dúvidas e generosamente ajudaram!

Bom galera Primeiro:

QUANDO vou buscar um Dados (dados max) Dentro do QVD, Preciso formatar Paragrafo timestamp porque no QVD Assim Como NÃO meu oráculo o formato de e DD / MM / AAAA HH24: MM: SS é Isso vai Ser Jogado Dentro da variavel vData, Esse foi O Primeiro Erro ...

Segundo, quando declaro variavel Uma NÃO Preciso Passar o formato Novamente pois ja passei NÃO busco carga quando Nao QVD é Isso estava Gerando o Erro de literal blablabla ... ufa

Terceiro DEPOIS de Passar hum Paragrafo variavel a buscar consulta não Como a Oracle INFORMAÇÕES repeitando Uma variavel, tambem Precisa formatar o tipo de Dados, voces me ajudaram Certo Quanto Ao USAR o TO_DATE mas Uma unica letra estava ferrando com a minha vida Aqui e POR ISSO NÃO funcionava Direito trazendo Valores de Dados Erradas ... resumindo sem Oracle e diferente do Qlik ... DD / MM / AAAA HH24: MI: SS esse "eu" Passou batido por Mim e POR ISSO NAO funcionava ...

Entao FICA Uma dica, Não um a Oracle DD / MM / AAAA HH24: MI: SS NÃO Qlik DD / MM / AAAA HH: MM: SS

Obrigado a todos vou Ficar fera Nesse Qlik com a Ajuda de VOCÊS!