Как захватить временную часть из date_time в pyspark pr sparksql?

#dataframe #pyspark #apache-spark-sql #databricks

#фрейм данных #pyspark #apache-spark-sql #блоки данных

Вопрос:

У меня есть поле visit_start_time_gmt в формате bigint, я смог преобразовать его в date_time, но теперь мне нужно удалить временную часть метки времени в другом столбце, см. Пример данных ниже

введите описание изображения здесь

Ответ №1:

Если вы хотите сократить время, используйте date_trunc() функцию.

  • Если вы хотите преобразовать в дату, тогда используйте функцию to_date ().

Example:

 df.show()
# -------------------- 
#|visit_start_time_gmt|
# -------------------- 
#|          1522555602|
#|          1522622390|
# -------------------- 

from pyspark.sql.functions import *

df.withColumn("date_hour",date_trunc("HOUR",to_timestamp(col("visit_start_time_gmt")))).
withColumn("date",to_date(to_timestamp(col("visit_start_time_gmt")))).
show()
 -------------------- ------------------- ---------- 
|visit_start_time_gmt|          date_hour|      date|
 -------------------- ------------------- ---------- 
|          1522555602|2018-04-01 04:00:00|2018-04-01|
|          1522622390|2018-04-01 22:00:00|2018-04-01|
 -------------------- ------------------- ----------