在pyspark中,当某些时间戳为空时查找时间戳的差异
我在pyspark数据帧中有两个时间戳列,如下所示:在pyspark中,当某些时间戳为空时查找时间戳的差异,pyspark,timestamp,Pyspark,Timestamp,我在pyspark数据帧中有两个时间戳列,如下所示: +--------------------+--------------------+ | TIME_STAMP| TIME_STAMP2| +--------------------+--------------------+ |2020-01-03 12:58:...| null| |2020-01-03 12:59:...| null| |20
+--------------------+--------------------+
| TIME_STAMP| TIME_STAMP2|
+--------------------+--------------------+
|2020-01-03 12:58:...| null|
|2020-01-03 12:59:...| null|
|2020-01-03 13:01:...| null|
|2020-01-03 13:02:...| null|
|2020-01-03 13:04:...| null|
|2020-01-03 13:05:...| null|
|2020-01-03 13:07:...| null|
|2020-01-03 13:08:...|2020-01-03 12:58:...|
|2020-01-03 13:10:...|2020-01-03 12:59:...|
|2020-01-03 13:11:...|2020-01-03 13:01:...|
|2020-01-03 13:13:...|2020-01-03 13:02:...|
|2020-01-03 13:14:...|2020-01-03 13:04:...|
|2020-01-03 13:16:...|2020-01-03 13:05:...|
|2020-01-03 13:17:...|2020-01-03 13:07:...|
|2020-01-03 13:19:...|2020-01-03 13:08:...|
|2020-01-03 13:20:...|2020-01-03 13:10:...|
|2020-01-03 13:22:...|2020-01-03 13:11:...|
|2020-01-03 13:23:...|2020-01-03 13:13:...|
|2020-01-03 13:24:...|2020-01-03 13:14:...|
|2020-01-03 13:26:...|2020-01-03 13:16:...|
+--------------------+--------------------+
我想找出差异,但是,如果其中一个值为null
,我会得到一个错误。
有什么办法可以解决这个问题吗?
这就是我得到的错误:
遇到错误:“无法解析”(时间戳
-
由于数据类型不匹配,“(TIME\u STAMP
-
TIME\u STAMP2
)需要(数字或日历间隔)类型,而不是
时间戳
您可以将时间戳值强制转换为long并减去它们。您将以秒为单位获得差值:
from pyspark.sql import functions as f
df.withColumn('diff_in_seconds', f.col('TIME_STAMP').cast('long') - f.col('TIME_STAMP2').cast('long'))
df.show(10, False)
请注意,如果任何值为“null”,则结果也将为“null”。能否显示给出错误的代码?将结果设置为null很好。感谢您提供此解决方案!