Подтвердить что ты не робот

Фильтрация кадра данных искробезопасности на основе даты

У меня есть dataframe

date, string, string

Я хочу выбрать даты до определенного периода. Я пробовал следующее без везения

 data.filter(data("date") < new java.sql.Date(format.parse("2015-03-14").getTime))

Я получаю сообщение об ошибке

org.apache.spark.sql.AnalysisException: resolved attribute(s) date#75 missing from date#72,uid#73,iid#74 in operator !Filter (date#75 < 16508);

Насколько я понимаю, запрос неверен. Может ли кто-нибудь показать мне, каким образом запрос должен быть отформатирован?

Я проверил, что все enteries в dataframe имеют значения - они это делают.

4b9b3361

Ответ 1

Следующие решения применимы, поскольку искра 1,5:

Для ниже:

// filter data where the date is lesser than 2015-03-14
data.filter(data("date").lt(lit("2015-03-14")))      

Чем больше:

// filter data where the date is greater than 2015-03-14
data.filter(data("date").gt(lit("2015-03-14"))) 

Если ваш столбец даты DataFrame имеет тип StringType, вы можете преобразовать его с помощью функции to_date:

// filter data where the date is greater than 2015-03-14
data.filter(to_date(data("date")).gt(lit("2015-03-14"))) 

Вы также можете фильтровать в течение года с помощью функции year:

// filter data where year is greater or equal to 2016
data.filter(year($"date").geq(lit(2016)))