Uploaded image for project: 'Apache Arrow'
  1. Apache Arrow
  2. ARROW-15862

[C++] Provide a way to go from numeric to duration

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Critical
    • Resolution: Unresolved
    • None
    • None
    • C++
    • None

    Description

      Update: I keep forgetting that R integers are translated into int32 (since R does not have int64). int64 -> duration is supported. 
       Would it make sense to support float -> duration or int32 -> duration?

      ======================
      Currently it is not possible to directly create a duration object from a numeric one (for example through casting).

      library(arrow)
      
      a <- Array$create(32L)
      a$cast(duration("s"))
      #> Error: NotImplemented: Unsupported cast from int32 to duration using function cast_duration
      #> /Users/dragos/Documents/arrow/cpp/src/arrow/compute/function.cc:231  DispatchBest(&inputs)
      

      This underpins a lot of the date-time arithmetic in R, which support the conversion/ coercion of an integer to difftime (R's equivalent for duration), such as in the pipeline below.

      library(arrow, warn.conflicts = FALSE)
      #> See arrow_info() for available features
      library(dplyr, warn.conflicts = FALSE)
      library(lubridate, warn.conflicts = FALSE)
      
      df <- tibble(time = as_datetime(c("2022-03-07 15:00:28", "2022-03-06 14:00:28"))) 
      df
      #> # A tibble: 2 × 1
      #>   time               
      #>   <dttm>             
      #> 1 2022-03-07 15:00:28
      #> 2 2022-03-06 14:00:28
      
      df %>% 
        mutate(time2 = time + seconds(2))
      #> # A tibble: 2 × 2
      #>   time                time2              
      #>   <dttm>              <dttm>             
      #> 1 2022-03-07 15:00:28 2022-03-07 15:00:30
      #> 2 2022-03-06 14:00:28 2022-03-06 14:00:30
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              dragosmg Dragoș Moldovan-Grünfeld
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated: