sparkr:如何将工作日(没有周末的工作日)添加到日期

gajydyqb  于 2021-07-09  发布在  Spark
关注(0)|答案(0)|浏览(208)

我正试图在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的独立列

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题