【问题标题】:Use numeric variable input as days to make date_add work in SparkR使用数字变量输入作为天数使 date_add 在 SparkR 中工作
【发布时间】:2018-10-18 13:01:10
【问题描述】:

我有想要使用 SparkR 获取正确日期的日期和参考日期。这是一个玩具数据和代码:

library(magrittr)
library(SparkR)


df <- tibble::tribble(
        ~days,  ~date,
        17000L, "1970-01-01",
        17200L, "1970-01-01")
df_spark <- SparkR::as.DataFrame(df)

这行得通:

df_spark <- df_spark %>% 
  SparkR::mutate(date2 = date_add(to_date(df_spark$date), 17000))

但是,这不是。

df_spark <- df_spark %>% 
  SparkR::mutate(date2 = date_add(to_date(df_spark$date), df_spark$days))   

它抛出一个错误:

unable to find an inherited method for function ‘date_add’ for signature ‘"Column", "Column"’

我希望能够提供列“天”作为 date_add 的第二个参数,而不是数字,因为“天”有许多不同的值。我该怎么做?如果 date_add 无法实现,SparkR 中的其他解决方案是什么?

【问题讨论】:

    标签: r apache-spark sparkr


    【解决方案1】:

    您应该使用expr,而不是直接使用date_add

    expressiondf_spark <- df_spark %>% 
      SparkR::mutate(date2 = expr("date_add(to_date(date), days)"))
    
    expressiondf_spark %>% head()
    
       days       date      date2                                                   
    1 17000 1970-01-01 2016-07-18
    2 17200 1970-01-01 2017-02-03
    

    【讨论】:

      猜你喜欢
      • 2016-02-22
      • 1970-01-01
      • 2020-08-16
      • 2017-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多