Добавьте часы, минуты и секунды к кадру данных Spark - PullRequest
0 голосов
/ 02 июля 2018

Существует ли функция Spark SQL для добавления часов, минут и секунд в существующий столбец отметки времени.

Например:

+----------+-------------------+-------------------+
|        dt|             txn_dt|          txn_dt_tm|
+----------+-------------------+-------------------+
|2008-08-15|2008-08-15 00:00:00|2008-08-15 05:00:00|
+----------+-------------------+-------------------+

Мне нужно добавить 23 часа 59 минут и 59 секунд в столбец txn_dt.

Выход:

+----------+-------------------+-------------------+
|        dt|             txn_dt|          txn_dt_tm|
+----------+-------------------+-------------------+
|2008-08-15|2008-08-15 23:59:59|2008-08-15 05:00:00|
+----------+-------------------+-------------------+

Обновление:

Мне удалось получить его с помощью INTERVAL, но я не уверен, что это эффективный способ сделать это.

df.select((F.col("txn_dt") + F.expr("INTERVAL 23 HOURS") + F.expr("INTERVAL 59 MINUTES") + F.expr("INTERVAL 59 SECONDS")).alias("txn_dt_tm"))

1 Ответ

0 голосов
/ 02 июля 2018

Вам необходимо настроить функцию udf, например:

import org.apache.spark.sql.functions._
val timeUdf = udf{(time: java.sql.Timestamp) => new java.sql.Timestamp(time.getTime + 24*60*60*1000 - 1000)}
df.withColumn("dt", timeUdf(df("dt"))).show()

и результат:

+--------------------+---+
|                dt| id|
+--------------------+---+
|2008-08-15 23:59:...|  1|
+--------------------+---+

Надеюсь, это вам поможет.

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