从数据框中的列获取日期差异并获取秒数-Spark scala
get date difference from the columns in dataframe and get seconds -Spark scala
我有一个包含两个日期列的数据框。现在我需要得到差异,结果应该是秒
UNIX_TIMESTAMP(SUBSTR(date1, 1, 19)) - UNIX_TIMESTAMP(SUBSTR(date2, 1, 19)) AS delta
我正在尝试使用 Scala 将配置单元查询转换为数据帧查询
df.select(col("date").substr(1,19)-col("poll_date").substr(1,19))
从这里我无法转换为秒,任何人都可以帮助解决这个问题。提前致谢
使用 DataFrame API,您可以简单地通过在 unix_timestamp
:
中从另一列中减去一列来计算以秒为单位的日期差异
val df = Seq(
("2018-03-05 09:00:00", "2018-03-05 09:01:30"),
("2018-03-06 08:30:00", "2018-03-08 15:00:15")
).toDF("date1", "date2")
df.withColumn("tsdiff", unix_timestamp($"date2") - unix_timestamp($"date1")).
show
// +-------------------+-------------------+------+
// | date1| date2|tsdiff|
// +-------------------+-------------------+------+
// |2018-03-05 09:00:00|2018-03-05 09:01:30| 90|
// |2018-03-06 08:30:00|2018-03-08 15:00:15|196215|
// +-------------------+-------------------+------+
如有必要,您也可以在 Spark SQL 中执行计算:
df.createOrReplaceTempView("dfview")
spark.sql("""
select date1, date2, (unix_timestamp(date2) - unix_timestamp(date1)) as tsdiff
from dfview
""")
我有一个包含两个日期列的数据框。现在我需要得到差异,结果应该是秒
UNIX_TIMESTAMP(SUBSTR(date1, 1, 19)) - UNIX_TIMESTAMP(SUBSTR(date2, 1, 19)) AS delta
我正在尝试使用 Scala 将配置单元查询转换为数据帧查询
df.select(col("date").substr(1,19)-col("poll_date").substr(1,19))
从这里我无法转换为秒,任何人都可以帮助解决这个问题。提前致谢
使用 DataFrame API,您可以简单地通过在 unix_timestamp
:
val df = Seq(
("2018-03-05 09:00:00", "2018-03-05 09:01:30"),
("2018-03-06 08:30:00", "2018-03-08 15:00:15")
).toDF("date1", "date2")
df.withColumn("tsdiff", unix_timestamp($"date2") - unix_timestamp($"date1")).
show
// +-------------------+-------------------+------+
// | date1| date2|tsdiff|
// +-------------------+-------------------+------+
// |2018-03-05 09:00:00|2018-03-05 09:01:30| 90|
// |2018-03-06 08:30:00|2018-03-08 15:00:15|196215|
// +-------------------+-------------------+------+
如有必要,您也可以在 Spark SQL 中执行计算:
df.createOrReplaceTempView("dfview")
spark.sql("""
select date1, date2, (unix_timestamp(date2) - unix_timestamp(date1)) as tsdiff
from dfview
""")