在 sparklyr 中将变量转换为时间戳

Convert variable as Timestamp in sparklyr

我知道以前曾多次问过类似的问题,但我已经尝试了所有这些选项,但仍然没有得到想要的结果。

我有一个 sdf 作为 kl,格式如下:

   CONSUMER_ID   TimeStamp        TimeStamp2        
          <dbl>    <dbl>                <chr>              
 1       958    20171201000002 20171201000002        
 2       985    20171201000005 20171201000005  

我想将时间戳转换为 "yyyy/MM/dd H:M:S"

格式

我已经尝试了在网上找到的多个选项,但都不适用于此格式。

例如:

library(sparklyr)             
library(dplyr)

ms_rech_10 = kl %>% mutate(time_2 = date(timestamp(unix_timestamp(TimeStamp2))))

ms_rech_12 = kl %>% mutate(time_2 = date(TimeStamp2))

ms_rech_12 = kl %>% mutate(time_2 = to_date(TimeStamp2))

但在每个代码中我得到以下输出:

  CONSUMER_ID      TimeStamp     TimeStamp2     time_2    
          <dbl>          <dbl>       <chr>       <date>    
 1        958     20171201000002 20171201000002   NA        
 2        985     20171201000005 20171201000005   NA 

请按以下格式提供解决方案。

    CONSUMER_ID      TimeStamp     TimeStamp2     time_2    
          <dbl>          <dbl>       <chr>       <dttm>    
 1        958     20171201000002 20171201000002   2017/12/01 00:00:02        
 2        985     20171201000005 20171201000005   2017/12/01 00:00:05 

谢谢!!

如果您需要格式化字符串(您不能格式化时间戳):

df <- copy_to(sc, tibble(Timestamp2=c("20171201000002", "20171201000005")))

df %>%  
  mutate(time2 = from_unixtime(
    unix_timestamp(Timestamp2, "yyyyMMddHHmmss"), "yyyy/MM/dd HH:mm:ss"))

# Source:   lazy query [?? x 2]
# Database: spark_connection
  Timestamp2     time2              
  <chr>          <chr>              
1 20171201000002 2017/12/01 00:00:02
2 20171201000005 2017/12/01 00:00:05

否则就用to_timestamp(Timestamp2, "yyyyMMddHHmmss")