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

Nicola Crane commented on ARROW-15312:
--------------------------------------

This appears to be restricted to Parquet format as there are no issues with 
Feather or CSV:


{code:r}
library(arrow)
library(dplyr)
 
ds_path <- tempfile()
dir.create(ds_path)

df <- tibble(
  y = c(0L, 0L, NA_integer_),
  z = c(0L, 1L, NA_integer_)
)

df %>% arrow::write_dataset(ds_path, format = "feather")

arrow::open_dataset(ds_path, format = "feather") %>% collect() %>% 
filter(is.na(y))
#> # A tibble: 1 × 2
#>       y     z
#>   <int> <int>
#> 1    NA    NA

arrow::open_dataset(ds_path, format = "feather") %>% filter(is.na(y)) %>% 
collect()
#> # A tibble: 1 × 2
#>       y     z
#>   <int> <int>
#> 1    NA    NA

ds_path = tempfile()
dir.create(ds_path)

df %>% arrow::write_dataset(ds_path, format = "csv")

arrow::open_dataset(ds_path, format = "csv") %>% collect() %>% filter(is.na(y))
#> # A tibble: 1 × 2
#>       y     z
#>   <int> <int>
#> 1    NA    NA

arrow::open_dataset(ds_path, format = "csv") %>% filter(is.na(y)) %>% collect()
#> # A tibble: 1 × 2
#>       y     z
#>   <int> <int>
#> 1    NA    NA

{code}


> [R][C++] filtering a dataset with is.na() misses some rows
> ----------------------------------------------------------
>
>                 Key: ARROW-15312
>                 URL: https://issues.apache.org/jira/browse/ARROW-15312
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: R
>    Affects Versions: 6.0.1
>         Environment: R 4.1.2 on Windows
> arrow 6.0.1
> dplyr 1.0.7
>            Reporter: Pierre Gramme
>            Priority: Blocker
>             Fix For: 8.0.0, 7.0.1
>
>
> Hi !
> I just found an issue when querying an Arrow dataset with dplyr, filtering on 
> is.na(...)
> It seems linked to columns containing only one distinct value and some NA's.
> Can you also reproduce the following?
>  
> {code:java}
>   library(arrow)
>   library(dplyr)
>   
>   ds_path = "test-arrow-na"
>   df = tibble(x=1:3, y=c(0L, 0L, NA_integer_), z=c(0L, 1L, NA_integer_))
>   
>   df %>% arrow::write_dataset(ds_path)
>   
>   # OK: Collect then filter: returns row 3, as expected
>   arrow::open_dataset(ds_path) %>% collect() %>% filter(is.na(y))
>   # ERROR: Filter then collect (on y) returns a tibble with no row
>   arrow::open_dataset(ds_path) %>% filter(is.na(y)) %>% collect()
>   
>   # OK: Filter then collect (on z) returns row 3, as expected
>   arrow::open_dataset(ds_path) %>% filter(is.na(z)) %>% collect() {code}
>  
> Thanks
> Pierre



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to