Spark SQL - регулярное выражение для сопоставления только чисел - PullRequest
2 голосов
/ 10 февраля 2020

Я пытаюсь убедиться, что определенный столбец в кадре данных не содержит недопустимых значений (нечисловые данные). Для этого я пытаюсь использовать сопоставление регулярных выражений, используя rlike для сбора недопустимых значений в данных:

enter image description here

Мне нужно собрать значения со строковыми символами или пробелами или запятыми или любыми другими символами, которые не похожи на числа. Я пытался:

spark.sql("select * from tabl where UPC not rlike '[0-9]*'").show()

, но это не работает. выдает 0 строк.

Любая помощь приветствуется. Спасибо.

1 Ответ

3 голосов
/ 10 февраля 2020

rlike ищет любое совпадение в строке. Звездочка (*) означает 0 или много. Наличие нулевых чисел где-то в строке относится к каждой возможной строке. Вам нужно указать, что вы хотите найти соответствие с начала ^ до конца строки $

spark.sql("select * from tabl where UPC not rlike '^[0-9]*$'").show()

в качестве альтернативы вы также можете сопоставить любой отдельный не числовой символ c в строке [^0-9]

spark.sql("select * from tabl where UPC rlike '[^0-9]'").show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...