Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
renato_araujo
New Contributor III

Desconsiderar espaços entre as palavras

Prezados boa tarde.

Estou com o seguinte problema:

Tenho alguns arquivos (.txt) que chegarão diariamente para mim no formato abaixo/anexo que preciso a partir dessa string criar as devidas colunas(Uo, CodUo, GIMFP,Elemento, Item, Data, Ano, Empenho, CPF/CNPJ, Valor), porem o espaçamento entre eles não é padrão.

Gostaria de saber se consigo criar os campos desconsiderando o espaçamento independente de qual o tamanho do espaço e já pegar  próximo dado disponível.

Coloquei anexo meu qvw e o txt caso alguém possa me ajudar. Tem alguns teste que já havia realizado mais não com o sucesso esperado.

   1250 . 002            3900701      93  06         22/08/2017      2017         17        19791581/0001-55                     12.733,63                           1250 . 004            3900101      39  99         14/06/2017      2017         82        0/0001-91                             4.649,85                                     1250 . 004            3900101      30  16         04/07/2017      2017        204        16886351/0001-81                      6.979,00                       

Desde já agradeço                                      

1 Solution

Accepted Solutions
MVP
MVP

Re: Desconsiderar espaços entre as palavras

Renato,

veja se lhe atende....falta uns pequenos ajustes, mas já esta próximo....

QlikView x64 - [C__tmp_Extrator.qvw_]---2018-01-19 21_55_44.png

//

Set Verbatim = 1;

Tabela:

LOAD

   @1,

   left(@1,20)            as UNIDADE_EXECUTORA,

   mid(@1,15,18)      as GMIFP,

   mid(@1,33,8)                                    as ELEMENTO,

   mid(@1,41,4)                                    as ITEM,

   date(date#(trim(mid(@1,45,19)),'DD/MM/YYYY'))   as DTPREVISAO_PAGAMENTO,

   mid(@1,64,10)                               as EMPENHO_ANO,

   mid(@1,74,11)                                   as EMPENHO_NUMERO,

   trim(mid(@1,85,25))                             as CREDOR,

   num#(mid(@1,110,29))                            as VALOR_A_PAGAR;

LOAD @1

FROM [Exemplo.txt] (txt, codepage is 1252, no labels,delimiter is '*', msq)

Where not wildmatch(@1,'*PRODEMGE*','*EXECUTORA*','*RFCAE*','*UNIDADE*') AND LEN(trim(@1))>1;




7 Replies

Re: Desconsiderar espaços entre as palavras

Renato, me parece que o arquivo é posicional.

Bastaria mapear a posição de início e fim de cada campo. Quem te fornece esse arquivo, tem como te passar isso?

Re: Desconsiderar espaços entre as palavras

Um exemplo de como ficaria o código:

LOAD [@1:3],

     [@4:7],

     [@8:10],

     [@11:13],

     [@14:25],

     [@26:32],

     [@33:38],

     [@39:40],

     [@41:n]

FROM [Exemplo.txt] (fix, codepage is 1252, no labels, header is 7 lines);

Para fazer isso, basta abrir o arquivo, pelo "Arquivos de Tabela" (no script do qlik) e marcar "Registro Fixo", depois você vai clicando na tabela e marcando as posições

renato_araujo
New Contributor III

Re: Desconsiderar espaços entre as palavras

Yuri,

Não é posicional infelizmente, isso é como se fosse um print de uma tela do sistema financeiro do estado(SIAFI). tanto que o cabeçalho inicial se repete a cada x linhas do arquivo.

Vou anexar outro arquivo para você ter uma ideia.

Employee
Employee

Re: Desconsiderar espaços entre as palavras

Uma possível solução seria tratar tudo como uma linha só e tratar.

Hoje não consigo mexer com isso, mas me dê um toque na segunda se não tiver resolvido

MVP
MVP

Re: Desconsiderar espaços entre as palavras

Renato,

veja se lhe atende....falta uns pequenos ajustes, mas já esta próximo....

QlikView x64 - [C__tmp_Extrator.qvw_]---2018-01-19 21_55_44.png

//

Set Verbatim = 1;

Tabela:

LOAD

   @1,

   left(@1,20)            as UNIDADE_EXECUTORA,

   mid(@1,15,18)      as GMIFP,

   mid(@1,33,8)                                    as ELEMENTO,

   mid(@1,41,4)                                    as ITEM,

   date(date#(trim(mid(@1,45,19)),'DD/MM/YYYY'))   as DTPREVISAO_PAGAMENTO,

   mid(@1,64,10)                               as EMPENHO_ANO,

   mid(@1,74,11)                                   as EMPENHO_NUMERO,

   trim(mid(@1,85,25))                             as CREDOR,

   num#(mid(@1,110,29))                            as VALOR_A_PAGAR;

LOAD @1

FROM [Exemplo.txt] (txt, codepage is 1252, no labels,delimiter is '*', msq)

Where not wildmatch(@1,'*PRODEMGE*','*EXECUTORA*','*RFCAE*','*UNIDADE*') AND LEN(trim(@1))>1;




thiago_justen
Valued Contributor III

Re: Desconsiderar espaços entre as palavras

Primeira vez nessa jornada de 31 dias no Qlik que vi algo com Verbatim. Grande dica Mestre!

Verbatim ‒ QlikView

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
renato_araujo
New Contributor III

Re: Desconsiderar espaços entre as palavras

Pessoal valeu demais pela ajuda mais uma vez.

Funcionando perfeitamente com a solução afurtado e as dicas de todos. Fiz alguns alterações para complementar outras informações e campos que precisei mas no final esta tudo certo.

Valeu comunidade.