3 Replies Latest reply: Feb 25, 2013 3:42 PM by Joao Silva RSS

    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.

        • Re: Como extrair parte de um texto e transformar aquilo que foi extraido em um campo?
          Aderlan Rodrigues

          Olá joaolenon,

           

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

           

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

           

          Abraço.

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

              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