Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
Not applicable

Qvd Incremental

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 ?

Tags (1)
5 Replies
Not applicable

Re: Qvd Incremental

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.

Not applicable

Re: Qvd Incremental

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_)

Not applicable

Re: Qvd Incremental

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

bestofwest
Contributor II

Re: Qvd Incremental

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

MVP
MVP

Re: Qvd Incremental

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.

2014-12-14 17_42_04-.png

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