【发布时间】:2018-04-12 15:15:25
【问题描述】:
在 Spark 中向日期格式列添加天数(数字)时遇到问题。我知道有一个函数date_add 接受两个参数 - 日期列和整数:
date_add(date startdate, tinyint/smallint/int days)
我想改用整数类型的列值(不是整数本身)。
假设我有以下数据框:
val data = Seq(
(0, "2016-01-1"),
(1, "2016-02-2"),
(2, "2016-03-22"),
(3, "2016-04-25"),
(4, "2016-05-21"),
(5, "2016-06-1"),
(6, "2016-03-21"))
).toDF("id", "date")
我可以简单地将整数添加到日期:
val date_add_fun =
data.select(
$"id",
$"date",
date_add($"date", 1)
)
但我不能使用包含值的列表达式:
val date_add_fun =
data.select(
$"id",
$"date",
date_add($"date", $"id")
)
报错:
<console>:60: error: type mismatch;
found : org.apache.spark.sql.ColumnName
required: Int
date_add($"date", $"id")
有谁知道是否可以使用 column is date_add 函数?或者有什么解决方法?
【问题讨论】:
标签: scala apache-spark apache-spark-sql