微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决SparkR:如何将工作日没有周末的工作日添加到日期

我正在尝试向 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,3),1)
                                     )
                              )
         }
return(date_out)
}

df <- df %>% withColumn("DATE_OUT",DATEADD(column("DATE_IN"),2))
head(df)

但是这个速度很慢,而且会占用大量的 GC 内存

是否存在一种清晰、更优雅的方式来添加迄今为止的工作日?

注意:没有 expr 因为我试图将总和执行到一个函数中,而输入日期是一个没有数据框的独立列

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。