Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Prezado(a)s Boa tarde.
Tenho um projeto de que apura as metas X realizado dos analistas de negocios de minha empresa.
Hoje meu aplicativo ele faz a projecao do mes anterior e o mes corrente.
Primeiramente devido ao tempo de carga que deve ser o mais rapido possivel.
Porem gostaria de ir acumulando em um qvd "extra" digamos as cargas anteriores e subir no Qvw estas informacoes.
Imagino da seguinte maneira, durante a carga diaria, eu so processe o realizado do mes corrente.
Ai no ultimo dia do mes, ele pegue os dados deste qvd principal e jogue para outro qvd.
Dessa forma sempre acumulando..
Alguem ja precisou trabalhar desta maneira ?
Pq vc não gera um QVD por mês ??? Se vc gerar 1 QVD por mês vc teria esse as informações acumuladas e a informação do mês atual.
Eu faço assim
Gerar QVD Mensal
Declaro essa variavel
Let sAnoMesProc = mid(AddMonths(today(),-1),7,4)&mid(AddMonths(today(),-1),4,2);
E na Query e para gerar o qvd
WHERE date_format(DT_HOR_INI, '%Y%m') = '$(sAnoMesProc)';
STORE FATO_APONTAMENTO INTO [..\QVD\FATO_APONTAMENTO_$(sAnoMesProc).QVD];
Após isso para carregar o arquivo eu faço um loop
SUB DoDir (Root)
[Diretorios]:
Load
'$(Root)' as path autogenerate 1;
[FATO]:
LOAD
CAMPOS
FROM
[..\QVD\FATO_*.QVD]
(qvd);
END SUB
FOR each Dir in dirlist ('..\QVD')
CALL DoDir(Dir)
NEXT Dir
Gerando as tabelas fatos atráves de Sub
Comando Root é utilizado para criar o caminho de origem do arquivo. Após isso ele irá verificar se a Variavel Dir está no caminho C:\ETL\QVD
Se estiver ele irá chamar a função Sub DoDir que irá carregar todos os arquivos que estão nesse caminho
[..\..\..\..\ETL\QVD\FATO_*.QVD]
(OBS: o sinal de '*' é usado para representar qualquer coisa que estiver escrito depois da palavra FATO_)
Bom dia!
Eu tive que trabalhar com um cenário parecido com este onde eu teria que armazenar a classificação do Cliente em um determinado período. As informações eram extraídas do banco e armazenavam a informação semanal do cliente, para ter um curva de classificação de acordo com o cenário dos últimos 6 meses. Eu geralmente utilizo isso quando preciso armazenar uma informação onde o cenário pode modificar constantemente. Por exemplo: um cliente B na semana passada, pode ser, nesta semana, um cliente A.
Att.
Rebeca Gums
QVDs incrementais devem ser utilizados só em ultimo caso.
Raramente os utilizo e acho-os pesados.
Como exemplo direi que 12 QVD individuais de 100 Mb não correspondem a
um com 12x100mb.
Simplemente porque a geração de QVD's regista os dados por coluna e não grava os dados
em duplicado.
Estou a fazer um documento sobre esta matéria - Geração Dinamica de QVD's fora do Qlik.
Abr
Boa tarde.
Eu por exemplo uso a rotina abaixo em uma tabela que tem uma chave sequencial (CHANGENR).
Assim, eu verifico se existe um .qvd. Se existir, eu busco o ultimo numero (CHANGENR) e crio uma variável com o where maior que este numero. Caso contrario, a variável fica branca.
Depois de ler, verifico se existir o .qvd eu concateno nela e depois dou um store, criando um .qvd com os dados anteriores (congelados ) mais os novos.
Se você mudar esta rotina, podes fazer por data e neste caso verificando o ultimo dia do mês para dar o concatenate no congelado.
Para efeito de informação, esta tabela CDPOS do SAP, registra as alterações (LOG itens) e contem milhões de linhas. Sem o incremental levava 30 minutos lendo esta tabela. Com a rotina acima, este tempo caiu para 15 segundos, pois somente lé os registros de um numero para frente e neste caso o banco de dados (DB2) resolve de forma rápida e entrega somente os últimos registros.
Att,
Alessandro Furtado