如何用 Spark 过滤器替换 SQL date(field_date)?
How to substitute SQL date(field_date) by Spark filter?
我有以下使用 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 的 filter
或 where
获得相同的结果。
你想说吗,在 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")
以下 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查询那么你可以使用sqlapi如下
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)
我有以下使用 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 的 filter
或 where
获得相同的结果。
你想说吗,在 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")
以下 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查询那么你可以使用sqlapi如下
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)