Фильтрация строк на основе сложного условия в информационном кадре с искровой шкалой - PullRequest
0 голосов
/ 20 марта 2019

Мне нужно отфильтровать строки из кадра данных на основе некоторых условий, введенных пользователем. Я прочитал CSV-файл, чтобы получить каждое условие в виде строки. Затем используйте код ниже, чтобы выполнить фильтрацию.

dataframe.filter(expr(condition))

Это работает для простых условий, которые не содержат '&', '|'. Пример: "col1! = 0", "col2> 2".

Теперь требуется, чтобы он работал и в сложных условиях.

Ниже приведен пример

dataframe

col1 | col2 | col3 | col4 -----+------+------+------ 1.0 | 10 | 100 | x 0.2 | 20 | 200 | y 1.3 | 30 | 300 | x

сложное состояние: "(col1 <1.0) & (col2 + col3)> = 200) & (col4! = 'X')"

Есть ли способ сделать это?

1 Ответ

1 голос
/ 20 марта 2019

Вы можете преобразовать & и | в and и or. Если сложное условие глубоко вложено, вы можете просто сделать это рекурсивно.

Вот список функций Spark SQL для справки:

https://docs.databricks.com/spark/latest/spark-sql/language-manual/functions.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...