Scala:检查当前时间戳是不是大于我的数据框中的时间戳列

Posted

技术标签:

【中文标题】Scala:检查当前时间戳是不是大于我的数据框中的时间戳列【英文标题】:Scala: To check the current Timstamp is greater than a timestamp column in my dataframeScala:检查当前时间戳是否大于我的数据框中的时间戳列 【发布时间】:2016-05-02 06:15:28 【问题描述】:

假设我有一个包含 Timestamp 列的数据框。

Timestamp  
2016-04-19T17:13:17  
2016-04-20T11:31:31  
2016-04-20T18:44:31  
2016-04-20T14:44:01  

我必须检查当前 timsetamp 是否大于 Scala 中的 Timestamp + 1(即添加 1 天)列

【问题讨论】:

Filtering a spark dataframe based on date的可能重复 实际上我想检查当前时间戳而不是预定义日期。 好的,但是你想过滤还是什么?不清楚! 我必须检查我指定的条件并在另一个 Dataframe 中过滤掉 它回答了你的问题吗? 【参考方案1】:

DataFrame 支持两种类型的current_ 日期和时间戳

让我们考虑一个带有 id 和 event_date 列的 DataFrame df。

我们可以执行以下过滤操作:

import sqlContext.implicits._
import org.apache.spark.sql.functions._

// the event_date is before the current timestamp
df.filter('event_date.lt(current_timestamp()))

// the event_date is after the current timestamp
df.filter('event_date.gt(current_timestamp()))

我建议您阅读相关的 scala 文档以获取更多信息 here。你有一整节关于日期和时间戳的操作。

编辑:正如 cmets 中所讨论的,为了在您的 event_date 列中添加一天,您可以使用 date_add函数:

df.filter(date_add('event_date,1).lt(current_timestamp()))

【讨论】:

感谢@eliasah,它很有帮助。但是假设我们要过滤“event_date”+根据列中指定的大于当前的日期再添加一天。那我们怎样才能实现呢。 你可以使用 date_add 然后它也可以在文档中找到。【参考方案2】:

你可以这样做。

df.filter(date_add('column_name', 1).lt(current_timestamp()))

【讨论】:

以上是关于Scala:检查当前时间戳是不是大于我的数据框中的时间戳列的主要内容,如果未能解决你的问题,请参考以下文章

Spark Scala,如何检查数据框中是不是存在嵌套列

Scala:在scala中检查变量是不是为整数

从熊猫数据框中的日期时间中删除时间戳

如何检查时间戳是不是早于某个月数? [复制]

如何从熊猫数据框中的时间戳列中删除时区

检查当前循环迭代是不是大于前一个