gpt4 book ai didi

timestamp - Pyspark:两个日期之间的差异(Cast TimestampType,Datediff)

转载 作者:行者123 更新时间:2023-12-02 23:20:04 25 4
gpt4 key购买 nike

有一个包含事件和特定时间戳的表。我很难使用 Pyspark 2.0 API 计算过去的天数。当时间戳遵循另一种格式(yyyy-mm-dd)时,我设法做同样的事情

    +-------------------+------------------------+----------+--------------+
| first_booking_date|first_booking_date_clean| today |customer_since|
+-------------------+------------------------+----------+--------------+
|02-06-2011 20:52:04| 02-06-2011|02-06-2011| null|
|03-06-2004 18:15:10| 03-06-2004|02-06-2011| null|

我尝试了以下方法(没有效果):- 通过字符串操作提取日期并使用 datediff- 转换为时间戳,然后提取 dd:MM:yy (->结果 null)- 我更喜欢使用 pyspark 命令而不是使用 sql 进行任何其他转换

非常感谢您的帮助,非常感谢!!!

编辑:这是一个不起作用的示例:

import datetime
today = datetime.date(2011,2,1)
today = "02-06-2011"
first_bookings = first_bookings.withColumn("today",F.lit(today))
first_bookings = first_bookings.withColumn("first_booking_date_clean",F.substring(first_bookings.first_booking_date, 0, 10))
first_bookings = first_bookings.withColumn("customer_since",F.datediff(first_bookings.today,first_bookings.first_booking_date_clean))

最佳答案

这个答案基本上是 https://stackoverflow.com/a/36985244/4219202 的副本在您的情况下,first_booking_date_cleantoday 列的 timeFmt 将为“dd-MM-yyyy”

从 Spark 1.5 开始,您可以使用 unix_timestamp :

from pyspark.sql import functions as F
timeFmt = "yyyy-MM-dd'T'HH:mm:ss.SSS"
timeDiff = (F.unix_timestamp('EndDateTime', format=timeFmt)
- F.unix_timestamp('StartDateTime', format=timeFmt))
df = df.withColumn("Duration", timeDiff)

关于timestamp - Pyspark:两个日期之间的差异(Cast TimestampType,Datediff),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44821206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com