Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Separar dados no script

Bom dia

Tenho um campo na base chamado DOCUMENTO, onde nele vem 3 informações:

  1. Número da requisição/nota fiscal
  2. Código do requisitante/fornecedor
  3. Descrição do requisitante/fornecedor

Tais informações são separadas por " - ".

Existe alguma forma de eu separa este campo, no script, em 3 novos campos? Ja tentei utilizar o MID, porém nem sempre os campos tem o mesmo número de casas.

Documento.jpg

Desde já agradeço.

Labels (2)
1 Solution

Accepted Solutions
rphpacheco
Creator III
Creator III

Um exemplo:

Teste:

LOAD

*,

SubField(campo, '-', 1) AS campo1,

SubField(campo, '-', 2) AS campo2,

SubField(campo, '-', 3) AS campo3;

LOAD * Inline [

campo

010101010 - 01 - 45

]
;

View solution in original post

9 Replies
Not applicable
Author

Bom dia Rodrigo,

Utilize o comando Subfield para fazer esta separação.

abs.

Not applicable
Author

Como você obtêm eles ? através de uma carga SQL ?

matzenbacher
Creator II
Creator II

Not applicable
Author

A carga é feita por SQL. Já solicitei a TI da empresa que faça a carga com os campos separados, mas fazem 4 meses e nada ainda.

Not applicable
Author

Dei uma lida no tópico, porem o exemplo dado (pelo q entendi) é em 3 colunas diferentes. Quero separar uma coluna em 3.

Quero que, da primeira casa até o primeiro traço (  -  ) , seja uma coluna, do primeiro traço até o segundo, outra coluna, e após o segundo traço, a terceira coluna.

Desculpe minha ignorância se entendi errado..

matzenbacher
Creator II
Creator II

chegou a notar no primeiro load do exemplo:
(
txt, codepage is 1252, embedded labels, delimiter is ';', msq);

se for um arquivo de texto, carrega ele  utilizando o delimiter com o "-" ao invés do ";"

De fato, no post o subfield esta sendo usado pra outra coisa.

rphpacheco
Creator III
Creator III

Um exemplo:

Teste:

LOAD

*,

SubField(campo, '-', 1) AS campo1,

SubField(campo, '-', 2) AS campo2,

SubField(campo, '-', 3) AS campo3;

LOAD * Inline [

campo

010101010 - 01 - 45

]
;

Not applicable
Author

De uma olhada na função MID

Eu precisei ler dados de um CNAB, segue código de exemplo. O ideal se eles forem te mandar txt,fala para determinar que de posição x - y vai ser tal campo.

mid(s, n1[, n2 ])

Subcaracter do caracter s. O resultado é um caracter iniciado no caractere n1, com o comprimento de n2 caracteres. Se n2 for omitido, a função retornará a parte mais à direita do caracter, a partir do caracter n1. As posições na seqüência são numeradas de 1 em diante.

[DADOS_CNAB_SEGMENTO_J]:

LOAD

mid(@1,1, 3 ) AS [CODIGO DO BANCO],

mid(@1,4, 4 ) AS [CODIGO DO LOTE],

mid(@1,8, 1 ) AS [TIPO DE REGISTRO],

mid(@1,9, 5 ) AS [NUMERO DO REGISTRO],

mid(@1,14,1 ) AS [SEGMENTO],

mid(@1,15,3 ) AS [TIPO DE MOVIMENTO],

mid(@1,18,3 ) AS [BANCO FAVORECIDO],

mid(@1,21,1 ) AS [MOEDA],

mid(@1,22,1 ) AS [DV],

mid(@1,23,4 ) AS [VENCIMENTO],

mid(@1,27,10) AS [VALOR],

mid(@1,37,25) AS [CAMPO LIVRE],

mid(@1,62,30) AS [NOME DO FAVORECIDO],

mid(@1,92,8)  AS [DATA VENCTO],

mid(@1,100,15)AS [VALOR DO TÍTULO],

mid(@1,115,15)AS [DESCONTOS],

mid(@1,130,15)AS [ACRESCIMOS-CODIGO],

mid(@1,145,8) AS [DATA PAGAMENTO],

mid(@1,153,15)AS [VALOR PAGAMENTO],

mid(@1,162,15)AS [ZEROS],

mid(@1,183,20)AS [SEU NÚMERO],

mid(@1,203,13)AS [BRANCOS],

mid(@1,216,15)AS [NOSSO NÚMERO],

mid(@1,231,10)AS [OCORRENCIAS]

Not applicable
Author

Deu certo.. Fiz conforme o exemplo que o Raphael postou, e ficou como queria.

Obrigado amigos pela ajuda.

DOCUMENTO:

LOAD Distinct

  DOCUMENTO,

  SubField(DOCUMENTO, '-', 1) AS NR_REQUISIÇÃO,

  SubField(DOCUMENTO, '-', 2) AS EMITENTE_C,

  SubField(DOCUMENTO, '-', 3) AS EMITENTE_D,

  SubField(DOCUMENTO, '-', 2)&' - '&SubField(DOCUMENTO, '-', 3) AS EMITENTE

FROM

E:\QVD\Fato_Orcamento_Realizado.qvd

(qvd);