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

Load Vários Caminhos

Pessoal, boa tarde!

Estou com uma dúvida e creio que alguém já passou por esta situação também. Atualmente criei uma variável para realizar a leitura da pasta conforme mês atual, sendo:

FROM (XmlSimple, Table is [clienteResponse/listaCliente]);

Porém, devido ajuste do projeto precisaremos efetuar a leitura de todos os arquivos independente do ano / mês (tomei como exemplo o XML de Clientes).

Segue a estrutura para um melhor entendimento:

Capturar.PNG

Capturar_1.PNG

Capturar_2.PNG

Tentamos colocar asteriscos (FROM (XmlSimple, Table is [clienteResponse/listaCliente]);), porém não deu certo. Alguém já passou esta situação e saberia me ajudar?

Abraço!

Rafael

1 Solution

Accepted Solutions
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Rafael,

eu nao consigo validar o seu codigo....Se o resultado for o esperado...

Mas fiz um teste aqui lendo varios diretorios dentro de um

2016-01-14 12_38_07.jpg

e com o codigo abaixo le os arquivos ,QVD dentro de cada pasta

sub DoDir (Root)

   for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd'

      for each File in filelist (Root&'\*.' &Ext)

     

         ArquivosLidos:

         LOAD

            '$(File)'             as Name,

            FileSize( '$(File)' ) as Size,

            FileTime( '$(File)' ) as FileTime

         autogenerate 1;

        

         trace Lendo o arquivo $(Dir)/$(File) ;

         LOAD * FROM [$(Dir)/$(File)] (qvd);

      next File

   next Ext

  

   for each Dir in dirlist (Root&'\*' )

      call DoDir (Dir)

   next Dir

end sub

call DoDir ('C:\tmp\QVD');

2016-01-14 12_40_35.jpg

2016-01-14 12_41_15.jpg

furtado@farolbi.com.br

View solution in original post

8 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Rafael,

podes fazer um laco e indo diretório por diretório lendo os arquivos.....

Tem exemplos no help...

http://help.qlik.com/pt-BR/qlikview/12.0/Subsystems/Client/Content/Scripting/ScriptControlStatements...

furtado@farolbi.com.br
nicolett_yuri

Rafael, o asterisco vai funcionar apenas para o nome dos arquivos e não para os diretórios.

O que você terá que fazer é um FOR varrendo todos os seus diretórios para depois carregar os arquivos.

Segue abaixo um modelo de código que vai varrer uma árvore de diretórios. Lembre-se de alterar a variável com o caminho do diretório que deseja varrer (vPath) e caso precise também pode adicionar o tipo de arquivo que deseja buscar, adicionando mais extensões na linha 9 do código.

SET vPath = 'C:\Yuri\Projetos\BLA';

sub QVWDir(Root)

  FOR each vExt in 'xml'

  FOR each vFoundFile in filelist( '$(Root)' & '\*.'& '$(vExt)' )

  Trace >> Arquivo Encontrado: $(vFoundFile);

  LogManual_Atual:

  LOAD

  [@1:n] as NomeArquivoCompleto,

  SubField([@1:n], '\', -1) as NomeArquivo,

  SubField([@1:n], '\', -2) as Empresa,

  Text(ApplyMap('MapaEmpresa', SubField([@1:n], '\', -2))) as Layout,

  Date(Now(), 'DD/MM/YYYY hh:mm:ss') as DataHoraGeracao

  INLINE '$(vFoundFile)' (fix, no labels);

  NEXT vFoundFile;

  NEXT vExt;

  FOR each Dir in dirlist( '$(Root)' & '\*' )

  call QVWDir('$(Dir)')

  NEXT Dir;

end sub

Call QVWDir('$(vPath)');

rafael_limeira
Contributor III
Contributor III
Author

Yuri, bom dia!

Muito legal!! Fiz um teste aqui, porém, notei que apresenta os dados do arquivo (exemplo: nome do arquivo, data da geração, entre outros). Na verdade eu gostaria de consumir as informações dos arquivos localizados, tem alguma maneira, é possível?

Obrigado!

Rafael

rafael_limeira
Contributor III
Contributor III
Author

Alessandro, bom dia!

Gostei do site, muito bacana! Fiz um teste aqui, porém, notei que apresenta os dados do arquivo (exemplo: nome do arquivo, data da geração, entre outros). Na verdade eu gostaria de consumir as informações dos arquivos localizados, tem alguma maneira, é possível?

Obrigado!

Rafael

rafael_limeira
Contributor III
Contributor III
Author

Acho que consegui, rsrs. Coloquei o load setando o from através da leitura do For Each, veja:

sub DoDir (Root)

   for each Ext in 'xlsx'

      for each File in filelist (Root&'\*.' &Ext)

   

      Trace >> Arquivo Encontrado: $(File);

         LOAD ID,

                   Valor

         FROM

         [$(File)]

         (ooxml, embedded labels, table is Plan1);

      next File

   next Ext

  

   for each Dir in dirlist (Root&'\*' )

      call DoDir (Dir)

   next Dir

end sub

call DoDir ('C:\Users\rafael.limeira\Desktop\For Each')

Se puder verificar se é isso mesmo, bem como sugestões de melhorias ficarei agradecido. Obrigado!

rafael_limeira
Contributor III
Contributor III
Author

Alessandro,

Acho que consegui. Coloquei como resposta ao envio ao Yuri. Se puder verificar se é isso mesmo ou caso tenha sugestões de melhorias neste script manda aí 😜

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Rafael,

eu nao consigo validar o seu codigo....Se o resultado for o esperado...

Mas fiz um teste aqui lendo varios diretorios dentro de um

2016-01-14 12_38_07.jpg

e com o codigo abaixo le os arquivos ,QVD dentro de cada pasta

sub DoDir (Root)

   for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd'

      for each File in filelist (Root&'\*.' &Ext)

     

         ArquivosLidos:

         LOAD

            '$(File)'             as Name,

            FileSize( '$(File)' ) as Size,

            FileTime( '$(File)' ) as FileTime

         autogenerate 1;

        

         trace Lendo o arquivo $(Dir)/$(File) ;

         LOAD * FROM [$(Dir)/$(File)] (qvd);

      next File

   next Ext

  

   for each Dir in dirlist (Root&'\*' )

      call DoDir (Dir)

   next Dir

end sub

call DoDir ('C:\tmp\QVD');

2016-01-14 12_40_35.jpg

2016-01-14 12_41_15.jpg

furtado@farolbi.com.br
rafael_limeira
Contributor III
Contributor III
Author

Top Alessandro, muito bom!! Valeu!

Abraço!

Rafael