Как найти разницу времени между 2 датами в Скале? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть фрейм данных

+-----+----+----------+------------+----------+------------+
|empId| lId|     date1|      time1 |  date2   |    time2   |
+-----+----+----------+------------+----------+------------+
| 1234|1212|2018-04-20|21:40:29.077|2018-04-20|22:40:29.077|
| 1235|1212|2018-04-20|22:40:29.077|2018-04-21|00:40:29.077|
+-----+----+----------+------------+----------+------------+

Необходимо найти разницу во времени между двумя датами (в минутах) для каждого empId и сохранить в качестве нового столбца.Требуемый выход:

    +-----+----+----------+------------+----------+------------+---------+
    |empId| lId|     date1|      time1 |  date2   |    time2   |TimeDiff |
    +-----+----+----------+------------+----------+------------+---------+
    | 1234|1212|2018-04-20|21:40:29.077|2018-04-20|22:40:29.077|60       |
    | 1235|1212|2018-04-20|22:40:29.077|2018-04-21|00:40:29.077|120      |
    +-----+----+----------+------------+----------+------------+---------+

1 Ответ

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

Вы можете concat date и time и преобразовать его в timestamp и найти difference в минутах, как показано ниже

import org.apache.spark.sql.functions._
val format = "yyyy-MM-dd HH:mm:ss.SSS" //datetime format after concat

val newDF = df1.withColumn("TimeDiffInMinute",
  abs(unix_timestamp(concat_ws(" ", $"date1", $"time1"), format).cast("long")
  - (unix_timestamp(concat_ws(" ", $"date2", $"time2"), format)).cast("long") / 60D
)

unix_timestamp для преобразования datetime в timestamp, Вычитание timestamp приводит к seconds, а деление на 60 приводит к minutes.

Выход:

+-----+----+----------+------------+----------+------------+---------+
|empId| lId|     date1|       time1|     date2|       time2|dateTime1|
+-----+----+----------+------------+----------+------------+---------+
| 1234|1212|2018-04-20|21:40:29.077|2018-04-20|22:40:29.077|     60.0|
| 1235|1212|2018-04-20|22:40:29.077|2018-04-21|00:40:29.077|    120.0|
+-----+----+----------+------------+----------+------------+---------+

Надеюсь, это помогло!

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