Lad*_*lav 1 scala apache-spark
我有这个DataFrame org.apache.spark.sql.DataFrame:
|-- timestamp: integer (nullable = true)
|-- checkIn: string (nullable = true)
| timestamp| checkIn|
+----------+----------+
|1521710892|2018-05-19|
|1521710892|2018-05-19|
Run Code Online (Sandbox Code Playgroud)
所需的结果:获取一个新的列,该列的日期checkIn与timestamp(和2018-03-03 23:59:59和 2018-03-04 00:00:01之间的天差应为1)
因此,我需要
您可以使用from_unixtime将时间戳转换为日期并datediff计算天数的差额:
val df = Seq(
(1521710892, "2018-05-19"),
(1521730800, "2018-01-01")
).toDF("timestamp", "checkIn")
df.withColumn("tsDate", from_unixtime($"timestamp")).
withColumn("daysDiff", datediff($"tsDate", $"checkIn")).
show
// +----------+----------+-------------------+--------+
// | timestamp| checkIn| tsDate|daysDiff|
// +----------+----------+-------------------+--------+
// |1521710892|2018-05-19|2018-03-22 02:28:12| -58|
// |1521730800|2018-01-01|2018-03-22 08:00:00| 80|
// +----------+----------+-------------------+--------+
Run Code Online (Sandbox Code Playgroud)