Отфильтруйте значение NULL в столбце данных фрейма scala. - PullRequest
0 голосов
/ 23 мая 2018

У меня есть фрейм данных (df) со следующим:

+---------+--------------------+
|  col1|        col2           |
+---------+--------------------+
|colvalue1|                NULL|   
|colvalue2|col2value...        |
+------------+-----------------+

Я пытаюсь отфильтровать строки на основе col2 следующим образом

df.filter(($"col2".isNotNULL) || ($"col2" !== "NULL")  || ($"col2" !== "null")  || ($"col2".trim !== "NULL"))

Но строка с NULL равнане фильтруется.Этот столбец показывает nullable=true.

Может кто-нибудь сообщить мне, какую ошибку я делаю?Я использую Spark 1.6.

1 Ответ

0 голосов
/ 23 мая 2018

Ваша !== запись неверна, которая должна быть =!=, и вы не можете делать $"col2".trim и , так как вы использовали отрицания с ||, одно из отрицаний всегда верно ,В вашем примере ($"col2".isNotNULL) всегда имеет значение true, поэтому все строки фильтруются.Поэтому индивидуальное отрицание в сочетании с || следует воспринимать с осторожностью.

Поэтому правильная форма будет

df.filter(!($"col2".isNull || ($"col2" === "NULL") || ($"col2" === "null")))

или даже лучше, если вы используете встроенную функцию isnull и trim

df.filter(!(isnull($"col2") || (trim($"col2") === "NULL") || (trim($"col2") === "null")))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...