使用 Sparklyr 将字符串/字符转换为日期

2024-02-16

我已经将一张表带入 Hue,其中有一列日期,我正在尝试在 Rstudio 中使用 Sparklyr 来玩它。

我想将字符列转换为日期列,如下所示:

Weather_data = mutate(Weather_data, date2 = as.Date(date, "%m/%d/%Y"))

这运行正常,但是当我检查时:

head(Weather_data) 

如何正确地将 chr 转换为日期?

谢谢!!!!


问题是sparklyr不正确支持 SparkDateType。可以解析日期和正确的格式,但不能正确表示这些DateType列。如果这足够了,请按照以下说明进行操作。

在Spark 2.2或更高版本中使用to_date与JavaSimpleDataFormat兼容字符串:

df <- copy_to(sc, data.frame(date=c("01/01/2010")))
parsed <- df %>% mutate(date_parsed = to_date(date, "MM/dd/yyyy"))
parsed
# Source:   lazy query [?? x 2]
# Database: spark_connection
        date date_parsed
       <chr>       <chr>
1 01/15/2010  2010-01-15

有趣的是内部 Spark 对象仍然使用DateType列:

parsed %>% spark_dataframe
<jobj[120]>
  class org.apache.spark.sql.Dataset
  [date: string, date_parsed: date]

对于早期版本unix_timestamp and cast(但要注意可能的时区问题):

df %>%
  mutate(date_parsed = sql(
    "CAST(CAST(unix_timestamp(date, 'MM/dd/yyyy') AS timestamp) AS date)"))
# Source:   lazy query [?? x 2]
# Database: spark_connection
        date date_parsed
       <chr>       <chr>
1 01/15/2010  2010-01-15

Edit:

看起来这个问题已经在当前的 master 上解决了(sparklyr_0.7.0-9105):

# Source:   lazy query [?? x 2]
# Database: spark_connection
        date date_parsed
       <chr>      <date>
1 01/01/2010  2009-12-31
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Sparklyr 将字符串/字符转换为日期 的相关文章

随机推荐