如何通过Spark过滤器替换SQL日期(field_date)



我有以下使用sql的代码:

val yesterdayDate = "2018-03-13"
df.createOrReplaceTempView("myTable")
val result = spark.sql("select * from myTable where date(field_date) = '" + yesterdayDate)

field_date的值具有以下格式2018-02-13 23:55:11.382928

我想使用 Spark 的filterwhere获得相同的结果。

以下SQL查询应该适合您

val yesterdayDate = "2018-03-13"
df.createOrReplaceTempView("myTable")
val result = spark.sql(s"select * from myTable where date(field_date) == '${yesterdayDate}'")
result.show(false)

如果你不想使用sql查询,那么你可以使用sql api,如下所示

val yesterdayDate = "2018-03-13"
import org.apache.spark.sql.functions._
df.select("*").where(date_format(col("field_date"), "yyyy-MM-dd") === yesterdayDate).show(false)

你想说,在 Spark sql API 中吗?

如果是,你可以做

import spark.implicits._
val yesterdayDate = "2018-03-13"
val df = spark.read // read the source
val result = df.select("*").where($"field_date" === s"$yesterdayDate")

我不得不在这里编辑评论。

df.select("*").where(functions.date_format($"field_date".cast(DateType), "yyyy-MM-dd") === s"$yesterdayDate")

最新更新