Используйте числовые переменные как дни, чтобы date_add работал в SparkR - PullRequest
0 голосов
/ 14 октября 2018

У меня есть дни и контрольная дата, которые я хочу использовать, чтобы получить правильную дату с помощью 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"’

Я хочу иметь возможность предоставить столбец "days" в качестве 2-го аргумента для date_add вместо числа, так как существует много различных значений для "дней».Как мне это сделать?Если это невозможно с date_add, каково другое решение в SparkR?

1 Ответ

0 голосов
/ 18 октября 2018

Вместо непосредственного использования date_add следует использовать expr:

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
...