Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
Renato,
veja se lhe atende....falta uns pequenos ajustes, mas já esta próximo....
//
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;
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?
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
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.
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
Renato,
veja se lhe atende....falta uns pequenos ajustes, mas já esta próximo....
//
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;
Primeira vez nessa jornada de 31 dias no Qlik que vi algo com Verbatim. Grande dica Mestre!
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.