我正试图在sparkdatafrmae的日期列中添加一个特定的工作日数(bd)。
DATE_IN
1 2021-03-25
例如,如果旧日期是 2021-03-25
我们将补充 2 BD
新的日期是 2021-03-29
输出应为:
DATE_IN DATE_OUT
1 2021-03-25 2021-03-29
我找到了使用迭代的解决方案,如下面的示例:
DATEADD <- function(date_conv, increment){
date_out <- date_conv
for(i in 1:as.numeric(increment)){
date_out <- ifelse(dayofweek(date_out) == (1 | 6),
date_add(date_out, 2),
ifelse(dayofweek(date_out) == 5,
date_add(date_out,3),
date_add(date_out,1)
)
)
}
return(date_out)
}
df <- df %>% withColumn("DATE_OUT", DATEADD(column("DATE_IN"),2))
head(df)
但这是非常缓慢的,需要大量的gc内存
是否存在一种更清晰、更优雅的方式来添加迄今为止的工作日数?
注:无 expr
因为我试图将sum执行到一个函数中,而date from input是一个没有dataframe的独立列
暂无答案!
目前还没有任何答案,快来回答吧!