Community Spring Cleaning week is here! Join your fellow Maveryx in digging through your old posts and marking comments on them as solved. Learn more here!
Free Trial

Foro

RESUELTAS

¿Como extraer texto especifico de una columna?

xkid_dup_602
Asteroide

Hola comunidad, excelente tarde.

 

Estoy intentando extraer parde de un texto de una columna especifica, esto con el proposito de asignar una categoria a cada registro

 

La columna de donde intento extraer el texto tiene registros como estos:

 

FT3004_T3

FT0005T4

FT3002-T3

FT3008-T4.6

FT3008

 

El problema es que solo requiero extraer la ultima letra "T" y el número que le sigue a esta letra, es decir, espero obtener algo como esto:

 

rutacategoria (output)
FT3004_T3T3
FT0005T4T4
FT3002-T3T3
FT3008-T4.6T4
FT3008 

 

Intente usar la siguiente formula pero no funciono:

 

substring([ruta],findstring(right([ruta],length([ruta])-6),"T")+5,2)

 

¿Alguna idea? gracias de antemano por su tiempo, ¡Saludos!

7 RESPUESTAS 7
grchavarri
Bólido

Buenas @xkid_dup_602 

se me ocurren varias opciones para este planteamiento. Disculpa que no te pueda hacer ejemplos, no tengo el ordenador cerca.

 

1. Utilizar Regex para sacar lo que hay después de las T.

2. Por lo que veo en tus registros, hay siempre un valor de 2 letras y 4 números. Para ese ejemplo, podrías hacer un rigth de largo(ruta)-6 caracteres y después utilizar data cleansing para eliminar los caracteres sobrantes.

3.text to columns con un ancho fijo y después limpiar el resto de caracteres.

Si crees que alguna de estas soluciones te puede valer, dime y trabajamos en un ejemplo, sino seguimos buscando.

 

saludos!

xkid_dup_602
Asteroide

Hola @grchavarri gracias por responder.

 

Me parece que la opción de Regex es super acertada, de hecho empece a trabajar con esa alternativa, pero aun tiene un error, me extrae la primera letra "T" que encuentra y el caracter que le sigue, pero quisiera que esto lo ejecutara a partir del 6 caracter que es donde encuentro el texto que necesito extraer, esto es lo que estoy obteniendo:

 

Usando en ReGex:

 

 

rutacategoria
FG0104_T4.2T4
FT0120T3T0

 

Usando en ReGex: 

 

.*(T\d{1}).*

 

y yo necesitaria obtener:

 

rutacategoria
FG0104_T4.2T4
FT0120T3T3

 

 

¿Sabes que podria añadirle para que funcione?

grchavarri
Bólido

Buenas @xkid_dup_602 

La que estás utilizando debería darte el resultado que buscas, simplemente haz un paso intermedio en el que quites los 6 primeros caracteres y debería resultarte.

para hacerlo en un paso, yo utilizaría https://regex101.com para averiguarlo pero como comentaba antes, no ando con el ordenador a mano.

 

espero te sirva de ayuda! 
saludos 

 

carlosteixeira
15 - Aurora
15 - Aurora

@xkid_dup_602 

 

En mi flujo de trabajo, su fórmula funciona como necesita, consulte:

carlosteixeira2005_0-1613686432275.png

 

Saludos

Carlos A Teixeira

 

Carlos A Teixeira
FláviaB
Alteryx Community Team
Alteryx Community Team

Hola, @xkid_dup_602

¿Pudiste resolver tu problema?

Flávia Brancato
xkid_dup_602
Asteroide

Hola @FláviaB!

 

Seguro, la respuesta fue muy útil, muchas gracias @carlosteixeira 

 

Saludos!

FláviaB
Alteryx Community Team
Alteryx Community Team

Perfecto, @xkid_dup_602! Estamos felizes em ajudar.

Flávia Brancato
Etiquetas