Spark Scala - разница между текущей датой и максимумом (днем) - PullRequest
0 голосов
/ 07 мая 2018

Нужно рассчитать разницу между двумя датами. Вопрос

Currentdate - max(day_id)

«Текущая дата» имеет простой формат даты - yyyyMMdd

"day_id" имеет строковый формат, и его значение равно yyyy-mm-dd.

У меня есть фрейм данных, который преобразовал дату (формат строки) в формат даты (гггг-мм-дд)

df1 = to_date(from_unixtime(unix_timestamp(day_id, 'yyyy-MM-dd')))

Обычно для нахождения max (day_id) я бы сделал

def daySince (columnName: String): Column = { max(col(columnName))

Я не могу понять, как сделать разницу между

Currentdate - max(day_id)

1 Ответ

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

Учитывая входной фрейм данных со схемой как

+---+----------+
|id |day_id    |
+---+----------+
|id1|2017-11-21|
|id1|2018-01-21|
|id2|2017-12-21|
+---+----------+

root
 |-- id: string (nullable = true)
 |-- day_id: string (nullable = true)

, вы можете использовать current_date() и datediff() встроенные функции , чтобы удовлетворить ваши требования как

import org.apache.spark.sql.functions._
df.withColumn("diff", datediff(current_date(), to_date(col("day_id"), "yyyy-MM-dd")))

, который должен дать вам

+---+----------+----+
|id |day_id    |diff|
+---+----------+----+
|id1|2017-11-21|167 |
|id1|2018-01-21|106 |
|id2|2017-12-21|137 |
+---+----------+----+
...