8 Replies Latest reply: Jan 14, 2016 11:14 AM by Rafael Limeira RSS

    Load Vários Caminhos

    Rafael Limeira

      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 [T:\SIT\Gerenciador de Informações\TabelASDescompactadAS\SGV\WEBSERVICE\$(anoRegistro)\$(mesRegistro)\**_Cliente.xml] (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 [T:\SIT\Gerenciador de Informações\TabelasDescompactadas\SGV\WEBSERVICE\****\**\**_Cliente.xml] (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

        • Re: Load Vários Caminhos
          Alessandro Furtado

          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/For%20Each.htm

            • Re: Load Vários Caminhos
              Rafael Limeira

              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

              • Re: Load Vários Caminhos
                Rafael Limeira

                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í ;P

                  • Re: Load Vários Caminhos
                    Alessandro Furtado

                    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

                • Re: Load Vários Caminhos
                  Yuri Nicolett

                  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)');
                  
                    • Re: Load Vários Caminhos
                      Rafael Limeira

                      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

                      • Re: Load Vários Caminhos
                        Rafael Limeira

                        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!