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

Como extrair parte de um texto e transformar aquilo que foi extraido em um campo?

Pessoal, boa tarde!

Tenho uma base em excel que em um determinado campo contem dados do tipo texto. No meio desse texto, ha uma parte que eu precisaria extrair uma parte da informação e transfoma-lo em outro campo. Porem, esse texto nao tem um tamanho padrao ate a parte que preciso extrair, nem antes nem depois. Nao estou conseguindo encotrar uma solução para resolver esse problema.

Exemplo: o campo traz a seguinte informação: numero_de_pedido_para_solicitação_P1_enviado_com_sucesso

O campo que preciso criar é justamente para pegar o tipo de solicitação. P1, P2, P3, etc. Para assim, conta-lo e criar um indicador.

A ideia e nao ter que trabalhar no arquivo em excel e sim tratar isso no proprio Qlik.

Isso é possivel de ser feito?

Alguem poderia me ajudar?

Obrigado.

1 Solution

Accepted Solutions
Not applicable
Author

Ola João,

Conforme o Aderlan falou você pode utilizar a função TextBetween em conjunto com outras funções de caracteres para chegar em uma lógica e extrair suas informações.

De acordo com o informado a informação que deseja é "P1", ou seja, a letra "P" em maiusculo seguido de um sequencial numérico.

Pode utilizar a função FindOneOF() para saber a posição desta letra em questão, desde que a letra P em maiusculo não se repita na sua string (ai teria que pensar em outra lógica), ficaria:

Texto exemplo:

numero_de_pedido_para_solicitação_P1_enviado_com_sucesso

FindOneOf( SUA_STRING, 'P' )  // retorna a posição deste caracter.

Este trecho retorna apenas a string iniciando com o caracter "P"

MID( SUA_STRING, FindOneOf( SUA_STRING, 'P' ) )

Resultado: P1_enviado_com_sucesso

Em seguida é necessário encontrar a posição do primeiro delimitador após o caracter "P" (no seu exemplo o "_").

FindOneOf (

     MID( SUA_STRING, FindOneOf( SUA_STRING, 'P' ) )

     , '_' )

Para obter o código desejado, utiliza-se a função LEFT informando a quantidade de posições que deve considerar da esquerda para a direita.

LEFT(

     MID( SUA_STRING, FindOneOf( SUA_STRING, 'P' ) )       // Seu texto iniciando em P

     ,     FindOneOf (

                 MID( SUA_STRING, FindOneOf( SUA_STRING, 'P' ) )

               , '_' ) - 1 // Posição do primeiro caracter "_", mas subtrai 1 para não ser demonstrado este caracter ("_")

)

Este é um exemplo de uma lógica de acordo com o texto de exemplo que você passou, vai variar muito de acordo com a sua base de dados, mas a idéia é demonstrar a utilização de funções de caracteres para a extração de uma determinada palavra chave dentro de um texto.

Abraços


View solution in original post

3 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Olá joaolenon,

Veja a função TextBetween na ajuda (F1).

TextBetween(campo, '_', '_',5)

Abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Ola João,

Conforme o Aderlan falou você pode utilizar a função TextBetween em conjunto com outras funções de caracteres para chegar em uma lógica e extrair suas informações.

De acordo com o informado a informação que deseja é "P1", ou seja, a letra "P" em maiusculo seguido de um sequencial numérico.

Pode utilizar a função FindOneOF() para saber a posição desta letra em questão, desde que a letra P em maiusculo não se repita na sua string (ai teria que pensar em outra lógica), ficaria:

Texto exemplo:

numero_de_pedido_para_solicitação_P1_enviado_com_sucesso

FindOneOf( SUA_STRING, 'P' )  // retorna a posição deste caracter.

Este trecho retorna apenas a string iniciando com o caracter "P"

MID( SUA_STRING, FindOneOf( SUA_STRING, 'P' ) )

Resultado: P1_enviado_com_sucesso

Em seguida é necessário encontrar a posição do primeiro delimitador após o caracter "P" (no seu exemplo o "_").

FindOneOf (

     MID( SUA_STRING, FindOneOf( SUA_STRING, 'P' ) )

     , '_' )

Para obter o código desejado, utiliza-se a função LEFT informando a quantidade de posições que deve considerar da esquerda para a direita.

LEFT(

     MID( SUA_STRING, FindOneOf( SUA_STRING, 'P' ) )       // Seu texto iniciando em P

     ,     FindOneOf (

                 MID( SUA_STRING, FindOneOf( SUA_STRING, 'P' ) )

               , '_' ) - 1 // Posição do primeiro caracter "_", mas subtrai 1 para não ser demonstrado este caracter ("_")

)

Este é um exemplo de uma lógica de acordo com o texto de exemplo que você passou, vai variar muito de acordo com a sua base de dados, mas a idéia é demonstrar a utilização de funções de caracteres para a extração de uma determinada palavra chave dentro de um texto.

Abraços


Not applicable
Author

Eduardo,

Cara, funcionou beleza.

Muito obrigado pela ajuda.

Obs. Desculpe pela demora no retorno. Fiquei 02 (duas) semanas fora.

Abraço.