You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@arrow.apache.org by "Antoine Pitrou (Jira)" <ji...@apache.org> on 2021/09/08 19:50:00 UTC

[jira] [Commented] (ARROW-13938) [C++] Date and datetime types should autocast from strings

    [ https://issues.apache.org/jira/browse/ARROW-13938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17412160#comment-17412160 ] 

Antoine Pitrou commented on ARROW-13938:
----------------------------------------

Interesting. For comparisons, that sounds reasonable, but I wonder if that may lead to undesirable behaviour for other kernels.

> [C++] Date and datetime types should autocast from strings
> ----------------------------------------------------------
>
>                 Key: ARROW-13938
>                 URL: https://issues.apache.org/jira/browse/ARROW-13938
>             Project: Apache Arrow
>          Issue Type: Improvement
>          Components: C++
>            Reporter: Jonathan Keane
>            Priority: Major
>
> 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:
> {code: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])
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)