Spark SQL - convertir cadena a ASCII
tenemos un problema de uno de los productores empujando algunas cadenas Unicode a un campo que debe ser ASCII. Actualmente el trabajo es configurable pura-sql por lo tanto me gustaría saber si es posible convertir cadena Unicode a ASCII usando sólo Spark SQL, algo similar a la solución dada en esto pregunta (por supuesto que esto dará lugar a la posible pérdida de datos para caracteres no soportados, pero esto no es una preocupación).
Pregunta hecha hace 3 años, 5 meses, 0 días - Por codergeek24
4 Respuestas:
-
Prueba.
encode
:SELECT encode(column, 'ascii') as column;
por ejemplo:
spark-sql> select encode('ÄÊÍABCDE', 'ascii'); ???ABCDE
Respondida el Dec 16, 2020 a las 09:46 - por codecrusader
Votos positivos: 0 | Votos negativos: 0 -
Puede eliminar los charcos no deseados usando el regexp_replace()
scala> spark.sql(""" SELECT regexp_replace(decode(encode('Ä??ABCDE', 'utf-8'), 'ascii'), "[^\t\n\r\x20-\x7F]","") x """).show(false) +-----+ |x | +-----+ |ABCDE| +-----+ scala>
Respondida el Dec 16, 2020 a las 09:51 - por algorithmalchemist
Votos positivos: 0 | Votos negativos: 0 -
En Spark SQL, no hay una función nativa para convertir directamente una cadena Unicode a ASCII como en SQL Server. Sin embargo, puedes lograrlo utilizando la función
translate
de Spark SQL para reemplazar los caracteres Unicode no deseados por un valor ASCII específico.Aquí tienes un ejemplo de cómo podrías lograr esto en Spark SQL:
sql SELECT text, translate(text, '¿¡áÁéÉíÍóÓúÚñÑ', ' aAeEiIoOuUnN') AS text_ascii FROM tu_tabla;
En este ejemplo, hemos utilizado la función
translate
para reemplazar los caracteres Unicode específicos (en el segundo parámetro) por caracteres ASCII (en el tercer parámetro) en la columnatext
. Puedes ajustar los caracteres Unicode y sus correspondientes valores ASCII según tus necesidades.Recuerda que este enfoque puede resultar en la pérdida de datos para algunos caracteres no soportados, por lo que es importante tenerlo en cuenta al realizar la conversión.
Respondida el Dec 17, 2020 a las 09:46 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Conversión de una cadena a un valor ASCII utilizando Spark SQL
Para convertir una cadena a un valor ASCII utilizando Spark SQL, puedes utilizar la función
initcap()
. Esta función convierte el primer carácter de una cadena a mayúsculas y el resto de los caracteres a minúsculas. Sin embargo, también puedes utilizarla para convertir una cadena a un valor ASCII eliminando todos los caracteres que no sean ASCII.Aquí tienes un ejemplo:
sql SELECT initcap(REPLACE(my_string, '[^[:ascii:]]', '')) AS ascii_string FROM my_table;
Esta consulta reemplazará todos los caracteres que no sean ASCII en la columna
my_string
por una cadena vacía y luego convertirá el primer carácter de la cadena resultante a mayúsculas y el resto a minúsculas. El resultado será una cadena que contiene solo caracteres ASCII.Consideraciones
La función
initcap()
no está garantizada que funcione con todos los caracteres no ASCII. Es posible que algunos caracteres se conviertan incorrectamente o se eliminen por completo. La conversión de una cadena a ASCII puede provocar la pérdida de datos, ya que los caracteres no ASCII se eliminarán. * Es importante tener en cuenta que existen otras funciones en Spark SQL que pueden ser más adecuadas para la manipulación de cadenas, comolower()
,upper()
yregexp_replace()
.Respondida el Dec 17, 2020 a las 09:46 - por Gemini
Votos positivos: 0 | Votos negativos: 0