crispybacon
Hola a todos,
actualmente estoy enfrentando un problema en PQ que no estoy seguro de cómo resolver.
Básicamente, necesito limpiar un campo de texto libre creado por los usuarios de mi aplicación de la que obtengo los datos.
Suponiendo que tengo la siguiente cadena: «aaa-bb bb-ccc//dd?eee», me gustaría «tener aaa_bb_bb_ccc__dd_eee»
Dado que se trata de un campo de texto libre, la cantidad de caracteres especiales que utilizan como delimitadores puede ser realmente grande. Entonces, ¿hay alguna manera de tener una lista con todos los caracteres especiales y luego verificar la cadena de cada registro si aparece, y si aparece alguno de los caracteres especiales para reemplazarlos por «_».
Me gustaría evitar tener todos estos pasos de transformaciones de reemplazo adicionales.
Necesito ese paso porque luego necesito hacer una categorización donde hago algo como
each if List.ContainsAny(Text.Split([col], "_"), checklist1) = true then "output" else if [and so on]
Estaba buscando en Google pero no pude encontrar ninguna fuente útil para el escenario anterior. Se agradece cualquier enlace a un recurso o idea :).
Salud,
cristiano
Rocco_sprmnt21
En respuesta a spg_vizcubo
let
Source = "aaa-bb bb-ccc//dd?eee",
special=Splitter.SplitTextByRepeatedLengths(1)(Source),
res=Text.Combine( List.Transform(special, each if List.Contains({"a".."z"}, _) then _ else Text.Replace(_, _, "_")))
in
res
spg_vizcubo
Hola @chrispybacon
Probablemente esto ayudaría
https://community.powerbi.com/t5/Desktop/Power-Query-Replace-multiple-substrings-in-one-column/td-p/…
¡Aprecie sus felicitaciones!
Si resuelvo su problema, acepte esto como una solución.
Agrégame en Linked In, visita mi blog vizcube.biz
suscríbete a mi canal de youtube
Rocco_sprmnt21
En respuesta a spg_vizcubo
let
Source = "aaa-bb bb-ccc//dd?eee",
special=Splitter.SplitTextByRepeatedLengths(1)(Source),
res=Text.Combine( List.Transform(special, each if List.Contains({"a".."z"}, _) then _ else Text.Replace(_, _, "_")))
in
res
crispybacon
En respuesta a Rocco_sprmnt21
Hola @Rocco_sprmnt21,
¡Ese enfoque funcionó muy bien! Eso también me ayudó a aprender algo sobre el uso de «_». Perdón por la respuesta tardía, estaba de vacaciones;).
Atentamente,
cristiano
spg_vizcubo
En respuesta a Rocco_sprmnt21
@ Rocco_sprmnt21 ¿Cómo podemos reemplazar Source como tabla?
Rocco_sprmnt21
En respuesta a spg_vizcubo
@spg_vizcubesi tiene la intención de aplicar las transformaciones a los valores de alguna columna de una tabla, esto se puede hacer definiendo una función que toma como entrada una cadena y da como salida una cadena transformada y usándola con la función agregar columna personalizada o algo así transformar columnas.
cual es exactamente tu caso
Rocco_sprmnt21
En respuesta a Rocco_sprmnt21
otra forma más de cambiar el conjunto de caracteres «no estándar» a un carácter predeterminado dado:
let
str_in="aaa-bb bb-ccc//dd?eee",
str_out=Text.Combine( List.Transform(Splitter.SplitTextByRepeatedLengths(1)(str_in), each Record.FieldOrDefault(Record.FromList({"a".."z"},{"a".."z"}),_ ,"_") ))
in
str_out