Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
Description
When comparing dates and datetimes, people frequently expect that a string (formatted as ISO8601) will auto-cast and compare to dates and times.
Examples in R:
library(arrow) #> #> Attaching package: 'arrow' #> The following object is masked from 'package:utils': #> #> timestamp arr <- Array$create(as.Date(c("1974-04-06", "1988-05-09"))) arr > "1980-01-01" #> Error: NotImplemented: Function greater has no kernel matching input types (array[date32[day]], scalar[string]) # creating the scalar as a date works, of course arr > Scalar$create(as.Date("1980-01-01")) #> Array #> <bool> #> [ #> false, #> true #> ] # datatimes also do not auto-cast arr <- Array$create(Sys.time()) arr > "1980-01-01 00:00:00" #> Error: NotImplemented: Function greater has no kernel matching input types (array[timestamp[us]], scalar[string]) # or a more real-world example library(dplyr) #> #> Attaching package: 'dplyr' #> The following objects are masked from 'package:stats': #> #> filter, lag #> The following objects are masked from 'package:base': #> #> intersect, setdiff, setequal, union mtcars$date <- as.Date(c("1974-04-06", "1988-05-09")) ds <- InMemoryDataset$create(mtcars) ds %>% filter(date > "1980-01-01") %>% collect() #> Error: NotImplemented: Function greater has no kernel matching input types (array[date32[day]], scalar[string])
Attachments
Issue Links
- is fixed by
-
ARROW-17462 [R] Cast scalars to type of field in Expression building
- Resolved