Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Incrementar dados em um QVD.

Pessoal, boa tarde!

Estou trabalhando com as bases de compras, vendas e estoque na empresa em que trabalho. Já criei varias visoes, extratores, etc. No entanto, os dados vao continuar chegando, e como a quantidade de dados ja esta ultrapassando os 80 milhoes de registros, gostaria de saber como posso acrescentar apenas um mês nos arquivos QVD's que possuo. Uma vez que recebo todos os meses as bases tanto em excel como em .txt.

Resumindo, como acrescentar os meses (informaçoes) em arquivos QVDs que já existem, sem ter que recarregar desde o primeiro mês?

Abraço.

1 Solution

Accepted Solutions
aderlanrm
Partner - Specialist
Partner - Specialist

João,

Após ler a sua primeira pergunta, achei melhor escrever mais um post, talvez lhe ajude.

Vejamos, você recebe arquivos com frequencia, os quais são Excel e TXT, no exemplo que você postou, existe um arquivo com várias planilhas, que até já postei o uso do FOR EACH para lhe auxiliar, porém, se houver a posibilidade de fazer o que vou descrever abaixo, vai facilitar muito a chegada desses arquivos.

Crie uma pasta onde você colocará os arquivos que chegam no seguinte padrão: (caso seja possível já gere ou peças os arquivos sempre no mesmo padrão, com apenas uma planilha interna com nome de Plan1 mesmo, ou outro, desde que seja sempre o mesmo nome da planilha)

GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012JANEIRO.xlsx

GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012FEVEREIRO.xlsx

GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012MARÇO.xlsx

GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012ABRIL.xlsx

...

GRD - BD VENDA - 2012JANEIRO.txt

GRD - BD VENDA - 2012FEVEREIRO.txt

Com isso feito, no QlikView, seu scritp vai ficar:

Estoque:

LOAD ... FROM [(caminho dos arquivos)\GRD - DB ESTOQUE LOJAS E CD OFICIAL - *.xlsx]

Vendas:

LOAD ... FROM [(caminho dos arquivos)\GRD - DB VENDAS - *.txt]

STORE Estoque INTO (caminho de destino)\Estoque.qvd (qvd);

STORE Vendas INTO (caminho de destino)\Vendas.qvd (qvd);

Com isso, basta colocar o novo arquivo na mesma pasta, com o mesmo padrão e o QV vai fazer o LOAD de tudo e gerar o QVD.

Como o volume de dados pode ser gigantesco, entra então os passos para carga incremental, onde você deve primeiro carregar o QVD, caregar os arquivos onde um campo chave não esteja do QVD ainda e só então fazer o STORE dos dados outra vez.

Assim o processo fica bem automático.

Grande abraço, espero que eu tenha conseguido esclarecer bem a sua dúvida.

*** Se foi útil, não esqueça de marcar como resposta/ajudou para também colaborar com toda a comunidade a esclarecer as dúvidas. ***

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)

View solution in original post

9 Replies
cesaraccardi
Specialist
Specialist

Olá João,

Este controle é bem simples, você pode simplesmente carregar o arquivo QVD salvo anteriormente filtrando na cláusula WHERE somente os períodos anteriores (Ex: WHERE Mês <> $(vMês), supondo a variável vMês sendo 10 -> período em aberto) e concatenar com a carga atual que é exclusiva do período em aberto, aí você armazena novamente no mesmo QVD. Segue um código de exemplo:

       DESPESA:

       SQL SELECT * FROM ORC_DESPESA WHERE ANO = $(vCtrCarga_Incremental_Ano);

        CONCATENATE(DESPESA)

          LOAD DESPESA_ANO,

               UNIDADE_PK,

               CRESPONS_PK,

               GRPCONTA_PK,

               PERIODO_COD,

               VLR_DESP_REAL,

               VLR_DESP_META,

               VLR_DESP_PROJ

          FROM $(QVDPath)\ORC_DESPESA.qvd(qvd)

          WHERE DESPESA_ANO <> $(vCtrCarga_Incremental_Ano) ;

            STORE DESPESA INTO $(QVDPath)\ORC_DESPESA.qvd;

Not applicable
Author

Cesar,

Tenho uma estrutura que importa o arquivo em excel, concatena todos os arquivos e depois eu gero um QVD. Seguindo o modelo/exemplo que voce criou. Eu teria que carregar esse qvd e concatenar com os meses que forem entrando. E isso?

Segue codigo:

LOAD PLATAFORMA,

    
PERÍODO,

    
TIPO_FILIAL,

    
FILIAL,

    
LINHA,

    
MIX,

    
FABRICANTE,

    
COD_PRODUTO,

    
PRODUTO,

    
QTD_ESTOQUE,

    
VALOR_ESTOQUE_UNITARIO,

    
VALOR_ESTOQUE

FROM



(
ooxml, embedded labels, table is [BD EST GRD JANEIRO]);



LOAD PLATAFORMA,

    
PERÍODO,

    
TIPO_FILIAL,

    
FILIAL,

    
LINHA,

    
MIX,

    
FABRICANTE,

    
COD_PRODUTO,

    
PRODUTO,

    
QTD_ESTOQUE,

    
VALOR_ESTOQUE_UNITARIO,

    
VALOR_ESTOQUE

FROM



(
ooxml, embedded labels, table is [BD EST GRD FEVEREIRO]);



LOAD PLATAFORMA,

    
PERÍODO,

    
TIPO_FILIAL,

    
FILIAL,

    
LINHA,

    
MIX,

    
FABRICANTE,

    
COD_PRODUTO,

    
PRODUTO,

    
QTD_ESTOQUE,

    
VALOR_ESTOQUE_UNITARIO,

    
VALOR_ESTOQUE

FROM



(
ooxml, embedded labels, table is [BD EST GRD MARÇO]);



LOAD PLATAFORMA,

    
PERÍODO,

    
TIPO_FILIAL,

    
FILIAL,

    
LINHA,

    
MIX,

    
FABRICANTE,

    
COD_PRODUTO,

    
PRODUTO,

    
QTD_ESTOQUE,

    
VALOR_ESTOQUE_UNITARIO,

    
VALOR_ESTOQUE

FROM



(
ooxml, embedded labels, table is [BD EST GRD ABRIL]);



LOAD PLATAFORMA,

    
PERÍODO,

    
TIPO_FILIAL,

    
FILIAL,

    
LINHA,

    
MIX,

    
FABRICANTE,

    
COD_PRODUTO,

    
PRODUTO,

    
QTD_ESTOQUE,

    
VALOR_ESTOQUE_UNITARIO,

    
VALOR_ESTOQUE

FROM



(
ooxml, embedded labels, table is [BD EST GRD MAIO]);



LOAD PLATAFORMA,

    
PERÍODO,

    
TIPO_FILIAL,

    
FILIAL,

    
LINHA,

    
MIX,

    
FABRICANTE,

    
COD_PRODUTO,

    
PRODUTO,

    
QTD_ESTOQUE,

    
VALOR_ESTOQUE_UNITARIO,

    
VALOR_ESTOQUE

FROM



(
ooxml, embedded labels, table is [BD EST GRD JUNHO]);



LOAD PLATAFORMA,

    
PERÍODO,

    
TIPO_FILIAL,

    
FILIAL,

    
LINHA,

    
MIX,

    
FABRICANTE,

    
COD_PRODUTO,

    
PRODUTO,

    
QTD_ESTOQUE,

    
VALOR_ESTOQUE_UNITARIO,

    
VALOR_ESTOQUE

FROM



(
ooxml, embedded labels, table is [BD EST GRD JULHO]);



LOAD PLATAFORMA,

    
PERÍODO,

    
TIPO_FILIAL,

    
FILIAL,

    
LINHA,

    
MIX,

    
FABRICANTE,

    
COD_PRODUTO,

    
PRODUTO,

    
QTD_ESTOQUE,

    
VALOR_ESTOQUE_UNITARIO,

    
VALOR_ESTOQUE

FROM



(
ooxml, embedded labels, table is [BD EST GRD AGOSTO]);



STORE [BD EST GRD JANEIRO] INTO C:\Users\joao.silva.BRPH\Desktop\QLIK\Base Vendas_Estoque Qlik\GRD_ESTOQUE.qvd;

pablolabbe
Luminary Alumni
Luminary Alumni

João,

   Creio que é mais simples gerar um QVD para cada pasta da planilha, já que cada uma delas representa a posição do estoque no fim do mês e que não vai mudar mais. Desta forma terás no diretório varios QVDs como o exemplo a seguir:

  GRD_ESTOQUE_2012_01.QVD

  GRD_ESTOQUE_2012_02.QVD

  GRD_ESTOQUE_2012_03.QVD

  GRD_ESTOQUE_2012_04.QVD

  GRD_ESTOQUE_2012_05.QVD

  GRD_ESTOQUE_2012_06.QVD

  GRD_ESTOQUE_2012_07.QVD

  GRD_ESTOQUE_2012_08.QVD

   Na hora de de ler os QVDS, use o comando Load * from GRD_ESTOQUE_*.QVD para ler todos os QVDs gerados de uma unica vez.

Abraço,

Pablo Labbe

Consultor Qlikview

www.visiongi.com.br

aderlanrm
Partner - Specialist
Partner - Specialist

Olá João,

Complementando a dica do Pablo e a do Cesar, pelo que vi no seu código, sugiro que faça uso do FOR EACH.

FOR Each Planilha in '[BD EST GRD JANEIRO]','[BD EST GRD FEVEREIRO]','[BD ES...

    Planilhas:

    LOAD PLATAFORMA,

         PERÍODO,

         TIPO_FILIAL,

         FILIAL,

         LINHA,

         MIX,

         FABRICANTE,

         COD_PRODUTO,

         PRODUTO,

         QTD_ESTOQUE,

         VALOR_ESTOQUE_UNITARIO,

         VALOR_ESTOQUE

    FROM

    (ooxml, embedded labels, table is $(Planilha));

NEXT;

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)
aderlanrm
Partner - Specialist
Partner - Specialist

João,

Após ler a sua primeira pergunta, achei melhor escrever mais um post, talvez lhe ajude.

Vejamos, você recebe arquivos com frequencia, os quais são Excel e TXT, no exemplo que você postou, existe um arquivo com várias planilhas, que até já postei o uso do FOR EACH para lhe auxiliar, porém, se houver a posibilidade de fazer o que vou descrever abaixo, vai facilitar muito a chegada desses arquivos.

Crie uma pasta onde você colocará os arquivos que chegam no seguinte padrão: (caso seja possível já gere ou peças os arquivos sempre no mesmo padrão, com apenas uma planilha interna com nome de Plan1 mesmo, ou outro, desde que seja sempre o mesmo nome da planilha)

GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012JANEIRO.xlsx

GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012FEVEREIRO.xlsx

GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012MARÇO.xlsx

GRD - BD ESTOQUE LOJAS E CD OFICIAL - 2012ABRIL.xlsx

...

GRD - BD VENDA - 2012JANEIRO.txt

GRD - BD VENDA - 2012FEVEREIRO.txt

Com isso feito, no QlikView, seu scritp vai ficar:

Estoque:

LOAD ... FROM [(caminho dos arquivos)\GRD - DB ESTOQUE LOJAS E CD OFICIAL - *.xlsx]

Vendas:

LOAD ... FROM [(caminho dos arquivos)\GRD - DB VENDAS - *.txt]

STORE Estoque INTO (caminho de destino)\Estoque.qvd (qvd);

STORE Vendas INTO (caminho de destino)\Vendas.qvd (qvd);

Com isso, basta colocar o novo arquivo na mesma pasta, com o mesmo padrão e o QV vai fazer o LOAD de tudo e gerar o QVD.

Como o volume de dados pode ser gigantesco, entra então os passos para carga incremental, onde você deve primeiro carregar o QVD, caregar os arquivos onde um campo chave não esteja do QVD ainda e só então fazer o STORE dos dados outra vez.

Assim o processo fica bem automático.

Grande abraço, espero que eu tenha conseguido esclarecer bem a sua dúvida.

*** Se foi útil, não esqueça de marcar como resposta/ajudou para também colaborar com toda a comunidade a esclarecer as dúvidas. ***

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)
Not applicable
Author

Cesar, funcionou legal.

Muito obrigado mesmo.

Not applicable
Author

Pablo,

Nao tinha pensado nisso.

Velew pela dica.

Not applicable
Author

Aderlan,

Consegui fazer como sugerido por voce.

Coloquei essa mesma estrutura para todos os arquivos que trabalho.

Obrigado.

Not applicable
Author

Pessoal,

Consegui fazer rodar com as dicas dadas por todos. Cesar, Aderlan e Pablo.

Agora e so escolher a melhor estrutura que se enquadra para aquilo que preciso.

Muito obrigado a todos.