как выполнить группу функций для этого столбца "item_value" набора данных? - PullRequest
0 голосов
/ 16 января 2020

с использованием spark- sql -2.4.1v.

val df = Seq(
  ("50312", "2019-03-31", "0.9992019"),
  ("50312", "2018-03-31", "0.9992018"),
("50312", "2017-03-31", "0.9992017")).toDF("id","date","item_value")
.withColumn("date", to_date(col("date") ,"yyyy-MM-dd").cast(DateType))
.withColumn("add_months", add_months($"date",-17))


val df2  = df.filter($"date".between(to_date(lit("2019-03-31"),"yyyy-MM-dd"),  add_months(to_date(lit("2019-03-31"),"yyyy-MM-dd"),-17)));
df2.show(20)

val df3  = df.filter($"date".lt(to_date(lit("2019-03-31"),"yyyy-MM-dd")))
             .filter($"date".gt(add_months(to_date(lit("2019-03-31"),"yyyy-MM-dd"),-17)))
df3.show(20)

между не работает, как ожидалось, что здесь не так? как это исправить?

1 Ответ

1 голос
/ 16 января 2020

Как уже упоминалось в комментариях, сначала ожидается нижняя граница, а затем верхняя граница.

Я помню одну вещь, которую я сейчас не могу найти:

Когда вы работали с датами / временными отметками, было несогласованность в том, как обрабатывалось включение.

Что-то вроде 2020 -01-01 должно быть включено (но не в нижней границе), в то время как 2020-01-01 00:00:00:

...