PySpark:减去两个时间戳列并以分钟为单位返回差异(使用 F.datediff 仅返回一整天)

Pin*_*ts0 9 python timestamp date apache-spark pyspark

我有以下示例数据框。date_1 和 date_2 列的数据类型为时间戳。

ID  date_1                      date_2                      date_diff
A   2019-01-09T01:25:00.000Z    2019-01-10T14:00:00.000Z    -1
B   2019-01-12T02:18:00.000Z    2019-01-12T17:00:00.000Z    0
Run Code Online (Sandbox Code Playgroud)

我想在几分钟内找到 date_1 和 date_2 之间的差异

当我使用下面的代码时,它以整数值(天)为我提供 date_diff 列:

df = df.withColumn("date_diff", F.datediff(F.col('date_1'), F.col('date_2')))  
Run Code Online (Sandbox Code Playgroud)

但我想要的是 date_diff 考虑时间戳并给我几分钟的时间。

我该怎么做呢?

pau*_*ult 19

只需将时间戳转换为 unix 时间戳(自纪元以来的秒数),计算差异,然后除以 60。

例如:

import pyspark.sql.functions as F
df.withColumn(
    "date_diff_min", 
    (F.col("date_1").cast("long") - F.col("date_2").cast("long"))/60.
).show(truncate=False)
Run Code Online (Sandbox Code Playgroud)