【发布时间】:2019-07-15 16:28:01
【问题描述】:
我在一些必须简单的事情上遇到了一些麻烦。但我仍处于学习的早期阶段。
问题是:我想得到一个项目的开始日期,然后再加上 20 天。我想以自动方式进行操作,而不是手动添加它(例如.. 虽然我知道它开始于 2019-06-01 我不想手动输入日期“2019-06-21”,因为我可能会更改它稍后,我想我这样做只是懒惰)。
所以,要获得我正在做的开始日期:
val start_date = table.select(date_trunc("day", min('applied_at)).as("start_date"))
返回的是一个
start_date: org.apache.spark.sql.DataFrame = [start_date: timestamp]
但是,如果我尝试在函数 date_add() 上使用它,则会出现错误。
val objective = date_add(start_date, 20)
error: type mismatch;
found : org.apache.spark.sql.DataFrame
(which expands to) org.apache.spark.sql.Dataset[org.apache.spark.sql.Row]
required: org.apache.spark.sql.Column
&& date_trunc("day",$"applied_at").as("applied_at") < date_add(start_date, projection_proxy)
^
所以我尝试了其他格式并玩了一下,但我自己找不到答案。一定是因为我没有必要的基础知识。
我知道它要求我提供一个列,但我可以将一个变量转换为一个列吗?我应该以不同的方式解决这个问题吗?
【问题讨论】:
-
是来自
org.apache.spark.sql.functions.date_add的date_add()如果是这样,那么它需要一个 colmn 和 Int 但你正在传递 Dataframe 和 Int。 -
如果你添加一些和你想要的输出会更好。
标签: scala apache-spark dateadd