根据日期范围过滤火花数据框[重复]

Posted

技术标签:

【中文标题】根据日期范围过滤火花数据框[重复]【英文标题】:filter spark dataframe based on a range of dates [duplicate] 【发布时间】:2019-07-31 09:10:59 【问题描述】:

我有:

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

val someDF = Seq(
  (8, "K25", "2019-05-22"),
  (64, "K25", "2019-05-26"),
  (64, "K25", "2019-03-26"),
  (27, "K26", "2019-02-24")
).toDF("Number", "ID", "Date").withColumn("Date", to_date(col("Date")))

我的目标是根据日期范围过滤此数据框,因此假设我想要获取日期为 2019-05-26 减去 3 个月的数据框行。请问我该如何应对?

【问题讨论】:

【参考方案1】:

您可以将过滤器用作

val someDF = Seq(
  (8, "K25", "2019-05-22"),
  (64, "K25", "2019-05-26"),
  (64, "K25", "2019-03-26"),
  (27, "K26", "2019-02-24")
).toDF("Number", "ID", "Date").withColumn("Date", to_date(col("Date")))

val compareDate = to_date(lit("2019-05-26"), "yyyy-MM-dd")

someDF.filter(
  $"Date" < to_date(lit("2019-05-26"), "yyyy-MM-dd") &&
    $"Date" > add_months(compareDate, -3)
)

如果您知道日期并且日期格式正确,则可以简单地使用日期字符串。

输出:

+------+---+----------+
|Number|ID |Date      |
+------+---+----------+
|8     |K25|2019-05-22|
|64    |K25|2019-03-26|
+------+---+----------+

【讨论】:

以上是关于根据日期范围过滤火花数据框[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从日期时间范围创建熊猫数据框[重复]

根据上个月和年份过滤火花数据框

根据火花数据框scala中的列值过滤行

火花数据框删除重复并保留第一

根据另一列的值过滤数据框列[重复]

根据列中的字符串过滤数据框[重复]